
Planning With Files De
Let a Stop-Hook report whether every phase in `task_plan.md` is complete (German messages) so long agent sessions do not end with unfinished plan items.
Overview
planning-with-files-de is an agent skill most often used in Build (also Ship review prep, Operate iterate) that checks `task_plan.md` phase completion via a PowerShell Stop-Hook with German status output.
Install
npx skills add https://github.com/othmanadi/planning-with-files --skill planning-with-files-deWhat is this skill?
- PowerShell Stop-Hook reads `task_plan.md` and always exits 0 while printing status to stdout
- Counts phases via `### Phase` headers and completion via `**Status:** complete` or `[complete]` fallback
- Reports in_progress and pending counts for honest session-end visibility
- German operator strings for teams using planning-with-files in DE locales
- Prompts to add new phases when user work continues but the plan shows all complete
- Supports dual status formats: **Status:** and [complete] inline markers
Adoption & trust: 2.8k installs on skills.sh; 22.9k GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You use markdown phase plans with your agent but have no reliable, language-consistent check when a session stops to see which phases are still pending.
Who is it for?
German-speaking solo builders on PowerShell who already maintain `task_plan.md` and want hook-driven plan hygiene.
Skip if: Teams without file-based planning or non-Windows environments unless they port the hook logic.
When should I use this skill?
Agent Stop-Hook fires and a `task_plan.md` exists in the working directory to report phase completion.
What do I get? / Deliverables
The Stop-Hook prints a clear DE summary of complete versus total phases and reminds you to extend the plan before starting more work when counts mismatch reality.
- Stdout phase completion summary
- Exit code 0 with operator guidance in German
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Primary shelf is Build → pm because the skill enforces file-based task planning that most solo builders adopt while implementing features, though the same plan file spans validation and shipping checkpoints. pm subphase covers phased task plans, status fields, and session handoff—not frontend or infra code itself.
Where it fits
End a long feature session and see 3/5 phases still pending before you open a PR.
Confirm launch-prep phases in the same plan file are marked complete before tagging a release.
After a bugfix sprint, verify new phases were added instead of closing the chat with a false all-complete signal.
How it compares
Complements planning-with-files authoring—this is a session-end checker hook, not a replacement for writing the plan itself.
Common Questions / FAQ
Who is planning-with-files-de for?
Solo builders using planning-with-files on Windows who want German Stop-Hook messages when verifying `task_plan.md` at session end.
When should I use planning-with-files-de?
During Build while executing phased implementation; before Ship when confirming review/security phases are marked complete; during Operate when iterating on backlog items tracked as new phases.
Is planning-with-files-de safe to install?
Check the Security Audits panel on this Prism page; the hook only reads `task_plan.md` by default and does not mutate files—verify hook wiring in your agent config matches your repo layout.
Workflow Chain
Requires first: planning with files
SKILL.md
READMESKILL.md - Planning With Files De
# Prüft, ob alle Phasen in task_plan.md abgeschlossen sind # Immer mit Exit-Code 0 beenden — Status über stdout melden # Wird vom Stop-Hook aufgerufen, um Aufgabenabschlussstatus zu melden param( [string]$PlanFile = "task_plan.md" ) if (-not (Test-Path $PlanFile)) { Write-Host '[planning-with-files-de] task_plan.md nicht gefunden — keine aktive Planungssitzung.' exit 0 } # Dateiinhalt lesen $content = Get-Content $PlanFile -Raw # Gesamtzahl der Phasen zählen $TOTAL = ([regex]::Matches($content, "### Phase")).Count # Zuerst **Status:** Format prüfen $COMPLETE = ([regex]::Matches($content, "\*\*Status:\*\* complete")).Count $IN_PROGRESS = ([regex]::Matches($content, "\*\*Status:\*\* in_progress")).Count $PENDING = ([regex]::Matches($content, "\*\*Status:\*\* pending")).Count # Fallback: Wenn **Status:** nicht gefunden, [complete] Inline-Format prüfen 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 } # Status melden — immer mit Exit-Code 0 beenden, unvollständige Aufgaben sind normaler Zustand if ($COMPLETE -eq $TOTAL -and $TOTAL -gt 0) { Write-Host ('[planning-with-files-de] Alle Phasen abgeschlossen (' + $COMPLETE + '/' + $TOTAL + '). Wenn der Benutzer zusätzliche Arbeit hat, neue Phasen in task_plan.md hinzufügen, bevor du beginnst.') } else { Write-Host ('[planning-with-files-de] Aufgabe läuft (' + $COMPLETE + '/' + $TOTAL + ' Phasen abgeschlossen). progress.md vor dem Stoppen aktualisieren.') if ($IN_PROGRESS -gt 0) { Write-Host ('[planning-with-files-de] ' + $IN_PROGRESS + ' Phasen noch in Bearbeitung.') } if ($PENDING -gt 0) { Write-Host ('[planning-with-files-de] ' + $PENDING + ' Phasen ausstehend.') } } exit 0 #!/usr/bin/env bash # Prüft, ob alle Phasen in task_plan.md abgeschlossen sind # Immer mit Exit-Code 0 beenden — Status über stdout melden # Wird vom Stop-Hook aufgerufen, um Aufgabenabschlussstatus zu melden PLAN_FILE="${1:-task_plan.md}" if [ ! -f "$PLAN_FILE" ]; then echo "[planning-with-files-de] task_plan.md nicht gefunden — keine aktive Planungssitzung." exit 0 fi # Gesamtzahl der Phasen zählen TOTAL=$(grep -c "### Phase" "$PLAN_FILE" || true) # Zuerst **Status:** Format prüfen COMPLETE=$(grep -cF "**Status:** complete" "$PLAN_FILE" || true) IN_PROGRESS=$(grep -cF "**Status:** in_progress" "$PLAN_FILE" || true) PENDING=$(grep -cF "**Status:** pending" "$PLAN_FILE" || true) # Fallback: Wenn **Status:** nicht gefunden, [complete] Inline-Format prüfen 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 # Auf 0 setzen, wenn leer : "${TOTAL:=0}" : "${COMPLETE:=0}" : "${IN_PROGRESS:=0}" : "${PENDING:=0}" # Status melden (immer mit Exit-Code 0 beenden — unvollständige Aufgaben sind normaler Zustand) if [ "$COMPLETE" -eq "$TOTAL" ] && [ "$TOTAL" -gt 0 ]; then echo "[planning-with-files-de] Alle Phasen abgeschlossen ($COMPLETE/$TOTAL). Wenn der Benutzer zusätzliche Arbeit hat, neue Phasen in task_plan.md hinzufügen, bevor du beginnst." else echo "[planning-with-files-de] Aufgabe läuft ($COMPLETE/$TOTAL Phasen abgeschlossen). progress.md vor dem Stoppen aktualisieren." if [ "$IN_PROGRESS" -gt 0 ]; then echo "[planning-with-files-de] $IN_PROGRESS Phasen noch in Bearbeitung." fi if [ "$PENDING" -gt 0 ]; then echo "[planning-with-files-de] $PENDING Phasen ausstehend." fi fi exit 0 # Initialisiert Planungsdateien für eine neue Sitzung # Verwendung: .\init-session.ps1 [Projektname] param( [string]$ProjectName = "projekt" ) $DATE = Get-Date -Format "yyyy-MM-dd" Write-H