بنقرة واحدة
close
Use when closing a finished milestone — writes MILESTONE.yml so /quangflow:status hides it from default view
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when closing a finished milestone — writes MILESTONE.yml so /quangflow:status hides it from default view
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when starting a new project or feature — scans codebase, creates CONTEXT.md, detects project type
Use when entering requirements phase — clarifying questions, edge cases, milestone splits, team composition
Use when entering execution handoff — ROADMAP generation, TDD/logging mandates, SHIP/REFINE gate
Use when entering verification — TDD compliance audit, evidence certification, gap detection
Use when project is shipped — systematic debugging, structured log scan, bug triage, hotfix
Use when running cook — auto-routes solo / light / team via Stage 0 complexity triage. Override with --solo / --light / --team flags.
| name | close |
| description | Use when closing a finished milestone — writes MILESTONE.yml so /quangflow:status hides it from default view |
You are the milestone close command — a lightweight finalize step that marks a milestone CLOSED without moving any files.
After a milestone ships (QA-REPORT.md / CERTIFICATION.md / SOLO-LOG.md present), user wants to "archive" it from the default /quangflow:status view to focus on active work. /quangflow:close M_N writes plans/{slug}/milestone-{N}/MILESTONE.yml with status=CLOSED. /quangflow:status filters CLOSED milestones unless --all flag passed.
KISS: no directory moves (preserves git blame + cross-references). No --reopen flag (manual delete of MILESTONE.yml if user wants to reopen).
/quangflow:close M_1 — Close milestone-1 (validate pre-conditions)
/quangflow:close M_1 --reason "shipped" — Close with custom reason (default: "completed")
/quangflow:close M_1 --force — Skip pre-condition validation (use with care)
/quangflow:close M_1 --feature my-slug — Disambiguate when multiple plan dirs exist
M_N syntax: M_1, M_2, M_10, etc. The number must match an existing milestone directory (milestone-1, milestone-2, ...).
Before writing MILESTONE.yml, verify:
plans/{slug}/milestone-{N}/ must be a directory.QA-REPORT.md OR CERTIFICATION.md OR SOLO-LOG.md exists. This proves the milestone was verified or solo-logged.status: CLOSED — if already closed, abort with message "Milestone {N} already closed at {timestamp}. Delete MILESTONE.yml to reopen."If --force flag passed, skip checks 2 and 3 (still require check 1 + check 4).
The validation logic is implemented in {plugin-root}/scripts/validate/validate-milestone-close.sh. Cook calls it before writing the yml. See script for exact exit codes.
If --feature flag passed: use plans/{feature}/milestone-{N}/.
If multiple plan dirs exist and no --feature: list them and ask user to disambiguate.
If exactly one plan dir: use it.
bash {plugin-root}/scripts/validate/validate-milestone-close.sh \
--milestone-dir "plans/{slug}/milestone-{N}" \
${force:+--force}
Exit codes:
--force.If validator fails (exit 1) without --force: print failure reason from validator stdout, suggest --force if user is sure.
Create plans/{slug}/milestone-{N}/MILESTONE.yml with this exact schema:
status: CLOSED
closed_at: <ISO-8601-UTC> # e.g. 2026-04-27T13:11:00Z
closed_reason: completed # or user-provided --reason
closed_by: quangflow:close # always this literal string
quangflow_version: <plugin-version> # read from .claude-plugin/plugin.json
artifacts:
- STATUS.md
- QA-REPORT.md # or CERTIFICATION.md or SOLO-LOG.md
notes: "" # optional, user can edit later
Fields:
status: always CLOSED (the only value /quangflow:close writes).closed_at: ISO 8601 UTC timestamp at write time.closed_reason: from --reason flag, default "completed".closed_by: always "quangflow:close".quangflow_version: read from project's .claude/.quangflow-version if exists, else "unknown".artifacts: list of evidence files found (subset of [STATUS.md, QA-REPORT.md, CERTIFICATION.md, SOLO-LOG.md]).notes: empty string (user may edit later).Print:
Milestone {N} closed.
- File: plans/{slug}/milestone-{N}/MILESTONE.yml
- Reason: {reason}
- Hidden from /quangflow:status default view (use --all to show).
- Reopen: delete MILESTONE.yml manually.
/quangflow:status reads each milestone's MILESTONE.yml:
status != CLOSED → milestone is OPEN, show in default view.status: CLOSED → milestone is CLOSED, hide from default view.--all flag → show CLOSED milestones grayed-out (e.g. with (closed) suffix).See status/SKILL.md → Multi-Milestone View for display rules.
User who wants to reopen a closed milestone:
rm plans/{slug}/milestone-{N}/MILESTONE.yml
Then /quangflow:status will show it as OPEN again. No --reopen flag in v2.3.0 (KISS — defer to v2.4.0+ if user demand surfaces).
/quangflow:close M_1
→ validates STATUS.md + QA-REPORT.md exist
→ writes MILESTONE.yml with status=CLOSED, reason=completed
→ /quangflow:status no longer lists M_1 in default view
/quangflow:close M_2 --reason "shipped to prod 2026-04-25"
→ writes MILESTONE.yml with closed_reason="shipped to prod 2026-04-25"
/quangflow:close M_3 --force --reason "abandoned, not pursuing"
→ skips evidence check, writes yml
/quangflow:close M_1 --feature my-feature-slug
→ targets plans/my-feature-slug/milestone-1/
/quangflow:close M_1
→ validator exit 2: "Milestone 1 already closed at 2026-04-25T10:00:00Z."
→ Abort. To reopen: rm MILESTONE.yml.
| Condition | Behavior |
|---|---|
| Plan dir not found | Print error, list available milestones, exit. |
Multiple features, no --feature | Print list, ask user to specify. |
| STATUS.md missing | Print "missing STATUS.md", suggest --force, exit. |
| No QA / CERT / SOLO-LOG | Print "no evidence file", suggest --force, exit. |
| Already closed | Print closed-at timestamp, exit (no overwrite). |
| Write fails (permission) | Print error, suggest chmod or run with proper user. |
--reopen flag (out of scope for v2.3.0).