
Planning With Files Ar
Attach an Arabic Stop hook that reports whether every phase in `task_plan.md` is complete before your agent session ends.
Overview
planning-with-files-ar is an agent skill most often used in Build (also Validate scope, Ship review) that checks Arabic `task_plan.md` phase completion via a PowerShell Stop hook.
Install
npx skills add https://github.com/othmanadi/planning-with-files --skill planning-with-files-arWhat is this skill?
- PowerShell Stop hook always exits 0 and uses stdout for completion status (by design).
- Counts phases via `### المرحلة` headers and matches `**الحالة:**` complete, in_progress, or pending.
- Falls back to inline `[complete]`, `[in_progress]`, and `[pending]` markers when **الحالة:** format is absent.
- Reports partial progress as normal in-progress state rather than failing the hook.
- Prompts adding new phases in task_plan.md when all phases are complete but work continues.
- Supports two status formats: **الحالة:** lines and [complete]/[in_progress]/[pending] markers.
- Stop hook is designed to always terminate with exit code 0.
Adoption & trust: 2.8k installs on skills.sh; 22.9k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent stops mid-project but you cannot tell from the session alone whether every planned مرحلة in task_plan.md was marked complete.
Who is it for?
Solo builders using planning-with-files with Arabic task plans and Windows or PowerShell-based agent hooks.
Skip if: English-only task_plan.md workflows without Arabic phase headers, or teams not using the planning-with-files markdown convention.
When should I use this skill?
Agent Stop hook fires and a `task_plan.md` with Arabic phase headers may be present in the working directory.
What do I get? / Deliverables
Each Stop event prints a clear Arabic/ bilingual status line with complete versus total phases so the next session updates the plan before starting new work.
- Stdout completion summary (complete/total phases)
- Non-blocking session-end planning state signal
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Build PM because the artifact is `task_plan.md` phase tracking during implementation, even though the same file spans planning from validate through ship. Subphase pm fits file-based task plans with numbered مراحل (phases) and status fields—the core planning-with-files pattern localized for Arabic headings.
Where it fits
After scoping, you seed task_plan.md with مراحل so the Stop hook can report zero complete phases until work starts.
Mid-sprint you mark one مرحلة **الحالة:** in_progress and the hook reminds you how many remain before you open a new feature.
You finish UI tasks and flip phases to complete so the next agent turn does not duplicate shipped work.
Before merge you run a session end expecting all phases complete or an explicit prompt to add new مراحل for post-launch fixes.
How it compares
A localized completion checker for file-based plans—not a brainstorming or writing-plans skill that authors the plan from scratch.
Common Questions / FAQ
Who is planning-with-files-ar for?
Indie builders and Arabic-speaking teams who already maintain `task_plan.md` with مرحلة sections and want automated completion reporting on agent Stop.
When should I use planning-with-files-ar?
During Validate when scoping phases into task_plan.md, throughout Build while toggling **الحالة:** per phase, and at Ship when you want a final hook readout before closing a long agent run.
Is planning-with-files-ar safe to install?
It only reads a local plan file and prints status; still review the Security Audits panel on this page and audit any hook wiring that runs PowerShell in your agent environment.
Workflow Chain
Requires first: planning with files
SKILL.md
READMESKILL.md - Planning With Files Ar
# التحقق من اكتمال جميع المراحل في task_plan.md # ينهي دائمًا برمز خروج 0 — يستخدم stdout للإبلاغ عن الحالة # يُستدعى بواسطة خطاف Stop للإبلاغ عن حالة اكتمال المهمة param( [string]$PlanFile = "task_plan.md" ) if (-not (Test-Path $PlanFile)) { Write-Host '[planning-with-files-ar] لم يتم العثور على task_plan.md — لا توجد جلسة تخطيط نشطة.' exit 0 } # قراءة محتوى الملف $content = Get-Content $PlanFile -Raw # حساب إجمالي عدد المراحل $TOTAL = ([regex]::Matches($content, "### المرحلة")).Count # التحقق أولاً من تنسيق **الحالة:** $COMPLETE = ([regex]::Matches($content, "\*\*الحالة:\*\* complete")).Count $IN_PROGRESS = ([regex]::Matches($content, "\*\*الحالة:\*\* in_progress")).Count $PENDING = ([regex]::Matches($content, "\*\*الحالة:\*\* pending")).Count # بديل: إذا لم يتم العثور على **الحالة:** فتحقق من تنسيق [complete] المضمن if ($COMPLETE -eq 0 -and $IN_PROGRESS -eq 0 -and $PENDING -eq 0) { $COMPLETE = ([regex]::Matches($content, "\[complete\]")).Count $IN_PROGRESS = ([regex]::Matches($content, "\[in_progress\]")).Count $PENDING = ([regex]::Matches($content, "\[pending\]")).Count } # الإبلاغ عن الحالة — ينهي دائمًا برمز خروج 0، المهام غير المكتملة حالة طبيعية if ($COMPLETE -eq $TOTAL -and $TOTAL -gt 0) { Write-Host ('[planning-with-files-ar] اكتملت جميع المراحل (' + $COMPLETE + '/' + $TOTAL + '). إذا كان لدى المستخدم عمل إضافي، أضف مراحل في task_plan.md قبل البدء.') } else { Write-Host ('[planning-with-files-ar] المهمة قيد التنفيذ (' + $COMPLETE + '/' + $TOTAL + ' مرحلة مكتملة). حدّث progress.md قبل التوقف.') if ($IN_PROGRESS -gt 0) { Write-Host ('[planning-with-files-ar] ' + $IN_PROGRESS + ' مرحلة/مراحل لا تزال قيد التنفيذ.') } if ($PENDING -gt 0) { Write-Host ('[planning-with-files-ar] ' + $PENDING + ' مرحلة/مراحل معلقة.') } } exit 0 #!/usr/bin/env bash # التحقق من اكتمال جميع المراحل في task_plan.md # ينهي دائمًا برمز خروج 0 — يستخدم stdout للإبلاغ عن الحالة # يُستدعى بواسطة خطاف Stop للإبلاغ عن حالة اكتمال المهمة PLAN_FILE="${1:-task_plan.md}" if [ ! -f "$PLAN_FILE" ]; then echo "[planning-with-files-ar] لم يتم العثور على task_plan.md — لا توجد جلسة تخطيط نشطة." exit 0 fi # حساب إجمالي عدد المراحل TOTAL=$(grep -c "### المرحلة" "$PLAN_FILE" || true) # التحقق أولاً من تنسيق **الحالة:** COMPLETE=$(grep -cF "**الحالة:** complete" "$PLAN_FILE" || true) IN_PROGRESS=$(grep -cF "**الحالة:** in_progress" "$PLAN_FILE" || true) PENDING=$(grep -cF "**الحالة:** pending" "$PLAN_FILE" || true) # بديل: إذا لم يتم العثور على **الحالة:** فتحقق من تنسيق [complete] المضمن if [ "$COMPLETE" -eq 0 ] && [ "$IN_PROGRESS" -eq 0 ] && [ "$PENDING" -eq 0 ]; then COMPLETE=$(grep -c "\[complete\]" "$PLAN_FILE" || true) IN_PROGRESS=$(grep -c "\[in_progress\]" "$PLAN_FILE" || true) PENDING=$(grep -c "\[pending\]" "$PLAN_FILE" || true) fi # الافتراضي 0 (إذا كان فارغًا) : "${TOTAL:=0}" : "${COMPLETE:=0}" : "${IN_PROGRESS:=0}" : "${PENDING:=0}" # الإبلاغ عن الحالة (ينهي دائمًا برمز خروج 0 — المهام غير المكتملة حالة طبيعية) if [ "$COMPLETE" -eq "$TOTAL" ] && [ "$TOTAL" -gt 0 ]; then echo "[planning-with-files-ar] اكتملت جميع المراحل ($COMPLETE/$TOTAL). إذا كان لدى المستخدم عمل إضافي، أضف مراحل في task_plan.md قبل البدء." else echo "[planning-with-files-ar] المهمة قيد التنفيذ ($COMPLETE/$TOTAL مرحلة مكتملة). حدّث progress.md قبل التوقف." if [ "$IN_PROGRESS" -gt 0 ]; then echo "[planning-with-files-ar] $IN_PROGRESS مرحلة/مراحل لا تزال قيد التنفيذ." fi if [ "$PENDING" -gt 0 ]; then echo "[planning-with-files-ar] $PENDING مرحلة/مراحل معلقة." fi fi exit 0 # تهيئة ملفات التخطيط لجلسة جديدة # الاستخدام: .\init-session.ps1 [اسم المشروع] param( [string]$ProjectName = "project" ) $DATE = Get-Date -Format "yyyy-MM-dd" Write-Host "جارٍ تهيئة ملفات التخطيط: $ProjectName" # إنشاء task_plan.md إذا لم يكن موجودًا if (-not (Test-Path "task_plan.md")) { @" # خطة المهمة: [وصف موجز] ## الهدف [وصف الحالة النهائية في جملة واحدة] ## ا