@hanzlaa/rcode 3.2.1 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +9 -9
- package/README.md +50 -50
- package/cli/context.js +4 -4
- package/cli/doctor.js +1 -1
- package/cli/generate-command-skills.cjs +203 -0
- package/cli/install.js +29 -12
- package/cli/lib/memory-bank.cjs +5 -5
- package/cli/set-mode.js +2 -2
- package/cli/uninstall.js +5 -5
- package/dist/rcode.js +27 -16
- package/package.json +1 -1
- package/rihal/DOCS-AUDIT.md +1 -1
- package/rihal/agents/rihal-ahmed.md +1 -1
- package/rihal/agents/rihal-codebase-mapper.md +3 -3
- package/rihal/agents/rihal-debugger.md +2 -2
- package/rihal/agents/rihal-fatima.md +2 -2
- package/rihal/agents/rihal-haitham.md +2 -2
- package/rihal/agents/rihal-khalid.md +1 -1
- package/rihal/agents/rihal-layla.md +1 -1
- package/rihal/agents/rihal-nasser.md +1 -1
- package/rihal/agents/rihal-noor.md +1 -1
- package/rihal/agents/rihal-nyquist-auditor.md +1 -1
- package/rihal/agents/rihal-omar.md +1 -1
- package/rihal/agents/rihal-phase-researcher.md +3 -3
- package/rihal/agents/rihal-planner.md +1 -1
- package/rihal/agents/rihal-project-researcher.md +2 -2
- package/rihal/agents/rihal-research-synthesizer.md +3 -3
- package/rihal/agents/rihal-roadmapper.md +3 -3
- package/rihal/agents/rihal-sadiq.md +1 -1
- package/rihal/agents/rihal-sprint-checker.md +3 -3
- package/rihal/agents/rihal-verifier.md +2 -2
- package/rihal/agents/rihal-waleed.md +1 -1
- package/rihal/agents/rihal-yousef.md +2 -2
- package/rihal/agents/rihal-zahra.md +1 -1
- package/rihal/agents/rihal-zayd.md +1 -1
- package/rihal/agents/rules/phase-researcher/detailed-guide.md +1 -1
- package/rihal/agents/rules/roadmapper/detailed-guide.md +1 -1
- package/rihal/agents/rules/sprint-checker/dimensions.md +3 -3
- package/rihal/agents/rules/sprint-checker/process.md +2 -2
- package/rihal/agents/rules/verifier/gap-output.md +1 -1
- package/rihal/agents/rules/verifier/verification-report.md +1 -1
- package/rihal/bin/rihal-hooks.cjs +6 -6
- package/rihal/bin/rihal-tools.cjs +60 -23
- package/rihal/brain/README.md +2 -2
- package/rihal/brain/best-practices/no-autonomous-bypass.md +2 -2
- package/rihal/brain/best-practices/research-citation-rule.md +1 -1
- package/rihal/brain/best-practices/state-sync-rule.md +4 -4
- package/rihal/commands/add-phase.md +1 -1
- package/rihal/commands/add-tests.md +1 -1
- package/rihal/commands/add-todo.md +1 -1
- package/rihal/commands/analyze-dependencies.md +1 -1
- package/rihal/commands/audit-fix.md +1 -1
- package/rihal/commands/audit-milestone.md +1 -1
- package/rihal/commands/audit-uat.md +1 -1
- package/rihal/commands/audit.md +1 -1
- package/rihal/commands/autonomous.md +1 -1
- package/rihal/commands/brainstorm.md +1 -1
- package/rihal/commands/chain.md +1 -1
- package/rihal/commands/check-todos.md +1 -1
- package/rihal/commands/checkpoint-preview.md +1 -1
- package/rihal/commands/cleanup.md +2 -2
- package/rihal/commands/code-review-fix.md +1 -1
- package/rihal/commands/code-review.md +1 -1
- package/rihal/commands/complete-milestone.md +1 -1
- package/rihal/commands/config.md +2 -2
- package/rihal/commands/correct-course.md +1 -1
- package/rihal/commands/council.md +1 -1
- package/rihal/commands/create-epics-and-stories.md +1 -1
- package/rihal/commands/create-story.md +2 -2
- package/rihal/commands/dashboard.md +1 -1
- package/rihal/commands/debug.md +1 -1
- package/rihal/commands/decisions.md +1 -1
- package/rihal/commands/dev-story.md +1 -1
- package/rihal/commands/diff.md +1 -1
- package/rihal/commands/discuss-phase.md +1 -1
- package/rihal/commands/discuss.md +2 -2
- package/rihal/commands/do.md +2 -2
- package/rihal/commands/docs-update.md +1 -1
- package/rihal/commands/document-project.md +1 -1
- package/rihal/commands/enable-hooks.md +1 -1
- package/rihal/commands/execute-sprint.md +2 -2
- package/rihal/commands/execute.md +1 -1
- package/rihal/commands/explore.md +1 -1
- package/rihal/commands/export-to-github.md +1 -1
- package/rihal/commands/forensics.md +1 -1
- package/rihal/commands/from-template.md +1 -1
- package/rihal/commands/health.md +1 -1
- package/rihal/commands/help.md +1 -1
- package/rihal/commands/import.md +1 -1
- package/rihal/commands/inbox.md +1 -1
- package/rihal/commands/init.md +1 -1
- package/rihal/commands/insert-phase.md +1 -1
- package/rihal/commands/install.md +1 -1
- package/rihal/commands/list-plans.md +1 -1
- package/rihal/commands/list-workspaces.md +1 -1
- package/rihal/commands/map-codebase.md +1 -1
- package/rihal/commands/milestone-summary.md +1 -1
- package/rihal/commands/new-milestone.md +1 -1
- package/rihal/commands/new-project.md +1 -1
- package/rihal/commands/new-workspace.md +1 -1
- package/rihal/commands/next.md +1 -1
- package/rihal/commands/note.md +1 -1
- package/rihal/commands/notify-test.md +1 -1
- package/rihal/commands/pause-work.md +1 -1
- package/rihal/commands/plan-milestone-gaps.md +3 -3
- package/rihal/commands/plan.md +2 -2
- package/rihal/commands/plant-seed.md +1 -1
- package/rihal/commands/pr-branch.md +2 -2
- package/rihal/commands/prfaq.md +1 -1
- package/rihal/commands/profile-user.md +1 -1
- package/rihal/commands/progress.md +3 -3
- package/rihal/commands/quick.md +1 -1
- package/rihal/commands/remove-phase.md +1 -1
- package/rihal/commands/remove-workspace.md +1 -1
- package/rihal/commands/replay.md +1 -1
- package/rihal/commands/rerun.md +1 -1
- package/rihal/commands/research-phase.md +2 -2
- package/rihal/commands/resume-work.md +1 -1
- package/rihal/commands/review.md +1 -1
- package/rihal/commands/scan.md +1 -1
- package/rihal/commands/secure-phase.md +1 -1
- package/rihal/commands/session-report.md +1 -1
- package/rihal/commands/settings.md +1 -1
- package/rihal/commands/ship.md +2 -2
- package/rihal/commands/show.md +1 -1
- package/rihal/commands/sprint-planning.md +1 -1
- package/rihal/commands/sprint-status.md +1 -1
- package/rihal/commands/stats.md +1 -1
- package/rihal/commands/status.md +1 -1
- package/rihal/commands/ui-phase.md +1 -1
- package/rihal/commands/ui-review.md +1 -1
- package/rihal/commands/undo.md +1 -1
- package/rihal/commands/update.md +1 -1
- package/rihal/commands/validate-phase.md +1 -1
- package/rihal/commands/verify-phase.md +2 -2
- package/rihal/commands/verify-work.md +1 -1
- package/rihal/commands/why.md +1 -1
- package/rihal/commands/workstream.md +1 -1
- package/rihal/references/agent-shared-rules.md +1 -1
- package/rihal/references/command-redirect-format.md +7 -7
- package/rihal/references/context-budget.md +2 -2
- package/rihal/references/continuation-format.md +16 -16
- package/rihal/references/dispatch-banner.md +1 -1
- package/rihal/references/execution-protocol.md +2 -2
- package/rihal/references/gates.md +3 -3
- package/rihal/references/git-integration.md +1 -1
- package/rihal/references/output-format.md +4 -4
- package/rihal/references/output-realism.md +1 -1
- package/rihal/references/revision-loop.md +1 -1
- package/rihal/references/state-schema.md +15 -15
- package/rihal/references/ui-brand.md +1 -1
- package/rihal/references/verb-dictionary.md +15 -15
- package/rihal/references/workstream-flag.md +28 -28
- package/rihal/skills/_shared/no-autonomous-bypass.md +2 -2
- package/rihal/skills/_shared/research-citation-rule.md +1 -1
- package/rihal/skills/_shared/state-sync-rule.md +4 -4
- package/rihal/skills/actions/1-analysis/rihal-prfaq/SKILL.md +1 -1
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/workflow.md +1 -1
- package/rihal/skills/actions/2-plan/rihal-create-milestone/SKILL.md +2 -2
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-06-phase-stubs.md +2 -2
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-07-backlog.md +2 -2
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-09-state-sync.md +2 -2
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-10-complete.md +4 -4
- package/rihal/skills/actions/2-plan/rihal-create-milestone/workflow.md +5 -5
- package/rihal/skills/actions/2-plan/rihal-create-prd/SKILL.md +1 -1
- package/rihal/skills/actions/2-plan/rihal-create-prd/workflow.md +1 -1
- package/rihal/skills/actions/2-plan/rihal-create-story/workflow.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/SKILL.md +3 -3
- package/rihal/skills/actions/4-implementation/rihal-dev-story/workflow.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/SKILL.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/checklist.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/workflow.md +1 -1
- package/rihal/skills/actions/4-implementation/rihal-sprint-status/workflow.md +5 -5
- package/rihal/skills/agents/dalil-scout/SKILL.md +7 -7
- package/rihal/skills/core/rihal-brainstorming/SKILL.md +1 -1
- package/rihal/skills/core/rihal-init/SKILL.md +1 -1
- package/rihal/skills/core/rihal-party-mode/SKILL.md +1 -1
- package/rihal/templates/milestone.md +1 -1
- package/rihal/templates/projects/api-backend/PROJECT.md +1 -1
- package/rihal/templates/projects/mobile-app/PROJECT.md +1 -1
- package/rihal/templates/projects/saas-b2b/PROJECT.md +1 -1
- package/rihal/workflows/add-phase.md +10 -10
- package/rihal/workflows/add-tests.md +9 -9
- package/rihal/workflows/add-todo.md +5 -5
- package/rihal/workflows/analyze-dependencies.md +7 -7
- package/rihal/workflows/audit-fix.md +4 -4
- package/rihal/workflows/audit-milestone.md +8 -8
- package/rihal/workflows/audit-uat.md +2 -2
- package/rihal/workflows/audit.md +28 -28
- package/rihal/workflows/autonomous.md +128 -44
- package/rihal/workflows/brainstorm.md +7 -7
- package/rihal/workflows/chain.md +16 -16
- package/rihal/workflows/check-implementation-readiness.md +4 -4
- package/rihal/workflows/check-todos.md +8 -8
- package/rihal/workflows/checkpoint-preview.md +1 -1
- package/rihal/workflows/code-review-fix.md +10 -10
- package/rihal/workflows/code-review.md +10 -10
- package/rihal/workflows/complete-milestone.md +5 -5
- package/rihal/workflows/correct-course.md +7 -7
- package/rihal/workflows/council.md +15 -15
- package/rihal/workflows/create-epics-and-stories.md +9 -9
- package/rihal/workflows/create-story.md +11 -11
- package/rihal/workflows/dashboard.md +8 -8
- package/rihal/workflows/debug.md +6 -6
- package/rihal/workflows/decisions.md +5 -5
- package/rihal/workflows/dev-story.md +12 -12
- package/rihal/workflows/diagnose-issues.md +2 -2
- package/rihal/workflows/diff.md +3 -3
- package/rihal/workflows/discuss-phase-power.md +7 -7
- package/rihal/workflows/discuss-phase.md +14 -14
- package/rihal/workflows/discuss.md +9 -9
- package/rihal/workflows/do.md +79 -79
- package/rihal/workflows/docs-update.md +6 -6
- package/rihal/workflows/document-project.md +5 -5
- package/rihal/workflows/enable-hooks.md +5 -5
- package/rihal/workflows/execute-sprint.md +3 -3
- package/rihal/workflows/execute.md +28 -28
- package/rihal/workflows/explore.md +5 -5
- package/rihal/workflows/export-to-github.md +5 -5
- package/rihal/workflows/forensics.md +8 -8
- package/rihal/workflows/from-template.md +8 -8
- package/rihal/workflows/health.md +11 -11
- package/rihal/workflows/help.md +117 -117
- package/rihal/workflows/import.md +4 -4
- package/rihal/workflows/inbox.md +8 -8
- package/rihal/workflows/init.md +23 -23
- package/rihal/workflows/insert-phase.md +9 -9
- package/rihal/workflows/install.md +3 -3
- package/rihal/workflows/karpathy-audit.md +11 -11
- package/rihal/workflows/list-plans.md +8 -8
- package/rihal/workflows/list-workspaces.md +7 -7
- package/rihal/workflows/map-codebase.md +5 -5
- package/rihal/workflows/milestone-summary.md +7 -7
- package/rihal/workflows/new-milestone.md +11 -11
- package/rihal/workflows/new-project-research.md +1 -1
- package/rihal/workflows/new-project-roadmap.md +8 -8
- package/rihal/workflows/new-project.md +32 -32
- package/rihal/workflows/new-workspace.md +7 -7
- package/rihal/workflows/next.md +13 -13
- package/rihal/workflows/note.md +7 -7
- package/rihal/workflows/notify-test.md +6 -6
- package/rihal/workflows/pause-work.md +6 -6
- package/rihal/workflows/plan-milestone-gaps.md +7 -7
- package/rihal/workflows/plan.md +28 -28
- package/rihal/workflows/plant-seed.md +3 -3
- package/rihal/workflows/pr-branch.md +1 -1
- package/rihal/workflows/prfaq.md +1 -1
- package/rihal/workflows/profile-user.md +5 -5
- package/rihal/workflows/progress.md +6 -6
- package/rihal/workflows/quick.md +12 -12
- package/rihal/workflows/remove-phase.md +6 -6
- package/rihal/workflows/remove-workspace.md +8 -8
- package/rihal/workflows/replay.md +8 -8
- package/rihal/workflows/rerun.md +5 -5
- package/rihal/workflows/research-phase.md +2 -2
- package/rihal/workflows/resume-work.md +10 -10
- package/rihal/workflows/review-adversarial.md +4 -4
- package/rihal/workflows/review-edge-case-hunter.md +5 -5
- package/rihal/workflows/review.md +11 -11
- package/rihal/workflows/scan.md +9 -9
- package/rihal/workflows/secure-phase.md +8 -8
- package/rihal/workflows/session-report.md +6 -6
- package/rihal/workflows/settings.md +15 -15
- package/rihal/workflows/ship.md +11 -11
- package/rihal/workflows/show.md +2 -2
- package/rihal/workflows/sprint-planning.md +13 -13
- package/rihal/workflows/sprint-status.md +10 -10
- package/rihal/workflows/stats.md +6 -6
- package/rihal/workflows/status.md +15 -7
- package/rihal/workflows/ui-phase.md +8 -8
- package/rihal/workflows/ui-review.md +5 -5
- package/rihal/workflows/undo.md +17 -17
- package/rihal/workflows/update.md +12 -12
- package/rihal/workflows/validate-phase.md +5 -5
- package/rihal/workflows/verify-work.md +18 -18
- package/rihal/workflows/why.md +9 -9
- package/rihal/workflows/workstream.md +11 -11
- package/server/lib/html/client.js +45 -45
|
@@ -49,7 +49,7 @@ Before verifying, discover project context:
|
|
|
49
49
|
10. **Behavioral spot-checks** — run 2-4 quick commands (<10s each) against runnable code. Skip if no runnable entry points.
|
|
50
50
|
11. **Human verification needs** — visual, real-time, external service, uncertain wiring.
|
|
51
51
|
12. **Determine status** — passed | gaps_found | human_needed. Score = verified_truths / total_truths.
|
|
52
|
-
13. **Structure gap output** — YAML frontmatter for `/rihal
|
|
52
|
+
13. **Structure gap output** — YAML frontmatter for `/rihal-plan --gaps`.
|
|
53
53
|
14. **Create VERIFICATION.md** — use Write tool (never heredoc). Return to orchestrator. DO NOT COMMIT.
|
|
54
54
|
|
|
55
55
|
## Final Status Tables
|
|
@@ -91,7 +91,7 @@ Read these ONLY when the current step needs them. Don't preemptively load.
|
|
|
91
91
|
- **DO NOT trust SUMMARY claims** — verify the component actually renders messages, not a placeholder.
|
|
92
92
|
- **DO NOT assume existence = implementation** — need level 2 (substantive), 3 (wired), and 4 (data flowing) for dynamic-data artifacts.
|
|
93
93
|
- **DO NOT skip key link verification** — 80% of stubs hide in wiring.
|
|
94
|
-
- **Structure gaps in YAML frontmatter** for `/rihal
|
|
94
|
+
- **Structure gaps in YAML frontmatter** for `/rihal-plan --gaps`.
|
|
95
95
|
- **DO flag for human verification when uncertain** (visual, real-time, external service).
|
|
96
96
|
- **Keep verification fast** — use grep/file checks, not running the app.
|
|
97
97
|
- **DO NOT commit** — leave committing to the orchestrator.
|
|
@@ -3,7 +3,7 @@ name: rihal-waleed
|
|
|
3
3
|
description: |
|
|
4
4
|
CTO and Chief Architect — for architecture decisions, stack selection,
|
|
5
5
|
technical feasibility, ADR writing, scalability ceilings, security posture,
|
|
6
|
-
tech-debt prioritisation. Spawned by /rihal
|
|
6
|
+
tech-debt prioritisation. Spawned by /rihal-council and technical dispatch.
|
|
7
7
|
Activates: "should we use X or Y", "can we scale to N", "is this feasible",
|
|
8
8
|
"right architecture for", "ADR for", "talk to Waleed", "rewrite vs refactor",
|
|
9
9
|
"monolith vs microservices", "which database / queue / cache".
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-yousef
|
|
3
3
|
description: |
|
|
4
|
-
Senior Backend Engineer — spawned by /rihal
|
|
4
|
+
Senior Backend Engineer — spawned by /rihal-council, /rihal-plan, and any
|
|
5
5
|
backend dispatch (API design, queries, services, queues, perf, integrations).
|
|
6
6
|
Activates for: API design, schema design, query optimization, p50/p95/p99
|
|
7
7
|
latency, throughput tuning, BullMQ / Celery / SQS / RabbitMQ, webhooks,
|
|
@@ -113,7 +113,7 @@ Always read on activation:
|
|
|
113
113
|
**Negative routing** — Out of scope
|
|
114
114
|
> *"What's the React component for the leads table?"*
|
|
115
115
|
>
|
|
116
|
-
> ⚙️ **Yousef:** Frontend — Haitham's lane. Hand off via `/rihal
|
|
116
|
+
> ⚙️ **Yousef:** Frontend — Haitham's lane. Hand off via `/rihal-discuss haitham`.
|
|
117
117
|
|
|
118
118
|
## Redirects
|
|
119
119
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-zahra
|
|
3
|
-
description: Branding & Creative Director — spawned by /rihal
|
|
3
|
+
description: Branding & Creative Director — spawned by /rihal-council for brand identity, visual language, typography systems (Latin + Arabic), color systems, design tokens, and cross-touchpoint brand consistency. Defers to Layla on UX interaction design, Haitham on frontend implementation, Mariam on marketing copy.
|
|
4
4
|
tools: Read, Grep, Glob, WebFetch
|
|
5
5
|
color: magenta
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-zayd
|
|
3
|
-
description: Senior ML Engineer — spawned by /rihal
|
|
3
|
+
description: Senior ML Engineer — spawned by /rihal-council for machine learning, OCR, LLM integration, RAG/retrieval, vector search, reranking, embeddings, prompt engineering, and eval questions. Defers to Waleed on architecture, Yousef on integration points (queues, APIs), Fatima on eval methodology.
|
|
4
4
|
tools: Read, Grep, Glob, Bash, WebFetch
|
|
5
5
|
color: purple
|
|
6
6
|
---
|
|
@@ -307,7 +307,7 @@ Verified patterns from official sources:
|
|
|
307
307
|
### Sampling Rate
|
|
308
308
|
- **Per task commit:** `{quick run command}`
|
|
309
309
|
- **Per wave merge:** `{full suite command}`
|
|
310
|
-
- **Phase gate:** Full suite green before `/rihal
|
|
310
|
+
- **Phase gate:** Full suite green before `/rihal-verify-work`
|
|
311
311
|
|
|
312
312
|
### Wave 0 Gaps
|
|
313
313
|
- [ ] `{tests/test_file.py}` — covers REQ-{XX}
|
|
@@ -189,7 +189,7 @@ issue:
|
|
|
189
189
|
|
|
190
190
|
## Dimension 7: Context Compliance (if CONTEXT.md exists)
|
|
191
191
|
|
|
192
|
-
**Question:** Do plans honor user decisions from /rihal
|
|
192
|
+
**Question:** Do plans honor user decisions from /rihal-discuss-phase?
|
|
193
193
|
|
|
194
194
|
**Only check if CONTEXT.md was provided in the verification context.**
|
|
195
195
|
|
|
@@ -244,7 +244,7 @@ Before running checks 8a-8d, verify VALIDATION.md exists:
|
|
|
244
244
|
ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null
|
|
245
245
|
```
|
|
246
246
|
|
|
247
|
-
**If missing:** **BLOCKING FAIL** — "VALIDATION.md not found for phase {N}. Re-run `/rihal
|
|
247
|
+
**If missing:** **BLOCKING FAIL** — "VALIDATION.md not found for phase {N}. Re-run `/rihal-plan {N} --research` to regenerate."
|
|
248
248
|
Skip checks 8a-8d entirely. Report Dimension 8 as FAIL with this single issue.
|
|
249
249
|
|
|
250
250
|
**If exists:** Proceed to checks 8a-8d.
|
|
@@ -406,7 +406,7 @@ issue:
|
|
|
406
406
|
missing_symbols:
|
|
407
407
|
- "imaginary_function"
|
|
408
408
|
verified_ratio: 0.2
|
|
409
|
-
fix_hint: "Plan was built on hallucinated findings. Re-run /rihal
|
|
409
|
+
fix_hint: "Plan was built on hallucinated findings. Re-run /rihal-debug to verify actual code state before replanning."
|
|
410
410
|
```
|
|
411
411
|
|
|
412
412
|
</verification_dimensions>
|
|
@@ -162,7 +162,7 @@ console.log(JSON.stringify(result, null, 2));
|
|
|
162
162
|
|
|
163
163
|
Check result:
|
|
164
164
|
- If `summary.ratio < 0.5`: **BLOCKER** — "Plan references files/symbols that don't exist. Plan was built on hallucinated findings."
|
|
165
|
-
- If `summary.ratio >= 0.5 AND < 0.8`: **WARNING** — List missing files/symbols, suggest re-planning with /rihal
|
|
165
|
+
- If `summary.ratio >= 0.5 AND < 0.8`: **WARNING** — List missing files/symbols, suggest re-planning with /rihal-debug
|
|
166
166
|
- If `summary.ratio >= 0.8`: **INFO** — Most references verified, proceed
|
|
167
167
|
|
|
168
168
|
Append to verification output:
|
|
@@ -288,7 +288,7 @@ Return all issues as a structured `issues:` YAML list (see dimension examples fo
|
|
|
288
288
|
| 01 | 3 | 5 | 1 | Valid |
|
|
289
289
|
| 02 | 2 | 4 | 2 | Valid |
|
|
290
290
|
|
|
291
|
-
Plans verified. Run `/rihal
|
|
291
|
+
Plans verified. Run `/rihal-execute {phase}` to proceed.
|
|
292
292
|
```
|
|
293
293
|
|
|
294
294
|
## ISSUES FOUND
|
|
@@ -119,7 +119,7 @@ All must-haves verified. Phase goal achieved. Ready to proceed.
|
|
|
119
119
|
1. **{Truth 1}** — {reason}
|
|
120
120
|
- Missing: {what needs to be added}
|
|
121
121
|
|
|
122
|
-
Structured gaps in VERIFICATION.md frontmatter for `/rihal
|
|
122
|
+
Structured gaps in VERIFICATION.md frontmatter for `/rihal-plan --gaps`.
|
|
123
123
|
|
|
124
124
|
{If human_needed:}
|
|
125
125
|
### Human Verification Required
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Subcommands:
|
|
6
6
|
* pre-edit — verify file was Read before Edit/Write (exit 2 if not)
|
|
7
|
-
* pre-workflow — soft warning for rihal
|
|
7
|
+
* pre-workflow — soft warning for rihal-* commands with suspicious args
|
|
8
8
|
* post-commit — verify commit format and no forbidden patterns
|
|
9
9
|
*
|
|
10
10
|
* All subcommands read stdin JSON from the hook execution context.
|
|
@@ -61,7 +61,7 @@ async function preEdit() {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* pre-workflow: Soft warning for rihal
|
|
64
|
+
* pre-workflow: Soft warning for rihal-* commands with suspicious args.
|
|
65
65
|
* Does not block (exit 0), but prints warning.
|
|
66
66
|
*/
|
|
67
67
|
async function preWorkflow() {
|
|
@@ -70,8 +70,8 @@ async function preWorkflow() {
|
|
|
70
70
|
const command = input.command || '';
|
|
71
71
|
const args = input.args || '';
|
|
72
72
|
|
|
73
|
-
// Only check rihal
|
|
74
|
-
if (!command.startsWith('rihal
|
|
73
|
+
// Only check rihal-* commands
|
|
74
|
+
if (!command.startsWith('rihal-')) {
|
|
75
75
|
process.exit(0);
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -94,8 +94,8 @@ async function preWorkflow() {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
if (hasSuspiciousPattern && (command === 'rihal
|
|
98
|
-
console.warn(`⚠ "${command}" with args: "${args}". Did you mean /rihal
|
|
97
|
+
if (hasSuspiciousPattern && (command === 'rihal-plan' || command === 'rihal-discuss')) {
|
|
98
|
+
console.warn(`⚠ "${command}" with args: "${args}". Did you mean /rihal-do or /rihal-council?`);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
process.exit(0);
|
|
@@ -505,7 +505,7 @@ function cmdClassifyQuestion(raw) {
|
|
|
505
505
|
}
|
|
506
506
|
|
|
507
507
|
/**
|
|
508
|
-
* init execute — returns context blob for the /rihal
|
|
508
|
+
* init execute — returns context blob for the /rihal-execute workflow.
|
|
509
509
|
* Resolves plan_path (single file or phase directory), reads the plan
|
|
510
510
|
* frontmatter, and returns dependency wave groupings.
|
|
511
511
|
*/
|
|
@@ -738,7 +738,7 @@ function cmdState(subArgs) {
|
|
|
738
738
|
if (sub === 'read' || sub === 'get') {
|
|
739
739
|
if (!fs.existsSync(statePath)) {
|
|
740
740
|
// Auto-init with defaults if config.yaml exists (install happened).
|
|
741
|
-
// Removes the "run /rihal
|
|
741
|
+
// Removes the "run /rihal-init first" friction — any workflow can
|
|
742
742
|
// call `state read` and get a usable state back.
|
|
743
743
|
const configPath = path.join(RIHAL_DIR, 'config.yaml');
|
|
744
744
|
if (fs.existsSync(configPath)) {
|
|
@@ -754,7 +754,7 @@ function cmdState(subArgs) {
|
|
|
754
754
|
}
|
|
755
755
|
return {
|
|
756
756
|
ok: false,
|
|
757
|
-
error: 'No state.json yet. Run /rihal
|
|
757
|
+
error: 'No state.json yet. Run /rihal-install to set up this project, or `state init --project <name>` directly.'
|
|
758
758
|
};
|
|
759
759
|
}
|
|
760
760
|
const state = readState();
|
|
@@ -2229,7 +2229,7 @@ function classifyScope(input) {
|
|
|
2229
2229
|
return 'feature';
|
|
2230
2230
|
}
|
|
2231
2231
|
|
|
2232
|
-
/** init plan — context blob for /rihal
|
|
2232
|
+
/** init plan — context blob for /rihal-plan workflow. */
|
|
2233
2233
|
function cmdInitPlan(rawArgs) {
|
|
2234
2234
|
const config = readConfig();
|
|
2235
2235
|
const tokens = (rawArgs || '').trim().split(/\s+/).filter(Boolean);
|
|
@@ -2322,7 +2322,7 @@ function cmdInitPlan(rawArgs) {
|
|
|
2322
2322
|
workflow: 'plan',
|
|
2323
2323
|
input_type: 'executable_plan',
|
|
2324
2324
|
resolved_path: resolvedPath,
|
|
2325
|
-
suggestion: `This file is already an executable plan. Run: /rihal
|
|
2325
|
+
suggestion: `This file is already an executable plan. Run: /rihal-execute ${path.relative(PROJECT_ROOT, resolvedPath)}`,
|
|
2326
2326
|
config,
|
|
2327
2327
|
paths: { project_root: PROJECT_ROOT, rihal: RIHAL_DIR, planning_root: PLANNING_DIR, state: path.join(RIHAL_DIR, 'state.json') },
|
|
2328
2328
|
};
|
|
@@ -2355,7 +2355,7 @@ function cmdPlanList() {
|
|
|
2355
2355
|
};
|
|
2356
2356
|
}
|
|
2357
2357
|
|
|
2358
|
-
/** init chain — context blob for /rihal
|
|
2358
|
+
/** init chain — context blob for /rihal-chain workflow. */
|
|
2359
2359
|
function cmdInitChain(rawArgs) {
|
|
2360
2360
|
const config = readConfig();
|
|
2361
2361
|
const installedAgents = listInstalledAgents();
|
|
@@ -2427,7 +2427,7 @@ function cmdInitChain(rawArgs) {
|
|
|
2427
2427
|
};
|
|
2428
2428
|
}
|
|
2429
2429
|
|
|
2430
|
-
/** init discuss — context blob for /rihal
|
|
2430
|
+
/** init discuss — context blob for /rihal-discuss workflow. */
|
|
2431
2431
|
function cmdInitDiscuss(rawArgs) {
|
|
2432
2432
|
const config = readConfig();
|
|
2433
2433
|
const installedAgents = listInstalledAgents();
|
|
@@ -2460,9 +2460,9 @@ function cmdModule(subArgs) {
|
|
|
2460
2460
|
// Hardcoded available modules (known at build time)
|
|
2461
2461
|
return {
|
|
2462
2462
|
modules: [
|
|
2463
|
-
{ name: 'core', description: 'Council agents, /rihal
|
|
2464
|
-
{ name: 'execution', description: 'Plan execution — /rihal
|
|
2465
|
-
{ name: 'discovery', description: 'Project discovery — /rihal
|
|
2463
|
+
{ name: 'core', description: 'Council agents, /rihal-council, /rihal-discuss, /rihal-status, /rihal-do router, /rihal-help, and state management' },
|
|
2464
|
+
{ name: 'execution', description: 'Plan execution — /rihal-execute, /rihal-plan, /rihal-quick, /rihal-debug, /rihal-audit-fix, /rihal-undo' },
|
|
2465
|
+
{ name: 'discovery', description: 'Project discovery — /rihal-new-project, /rihal-map-codebase, /rihal-scan, /rihal-explore, /rihal-code-review, /rihal-docs-update' },
|
|
2466
2466
|
]
|
|
2467
2467
|
};
|
|
2468
2468
|
}
|
|
@@ -2609,7 +2609,7 @@ function cmdConfigSet(subArgs) {
|
|
|
2609
2609
|
* --title <t> required headline
|
|
2610
2610
|
* --body <b> optional detail text
|
|
2611
2611
|
* --event <e> optional short event tag (e.g. "execute-done", "council-done")
|
|
2612
|
-
* --only slack|discord|teams restrict to one platform (for /rihal
|
|
2612
|
+
* --only slack|discord|teams restrict to one platform (for /rihal-notify-test)
|
|
2613
2613
|
*
|
|
2614
2614
|
* Returns: { sent: [...], skipped: [...], failed: [...] }
|
|
2615
2615
|
* Never throws on webhook failure — this runs at the tail of workflows and
|
|
@@ -3016,7 +3016,7 @@ function cmdBrain(args) {
|
|
|
3016
3016
|
* cmdProgress — single pre-computed progress blob (issue #159).
|
|
3017
3017
|
*
|
|
3018
3018
|
* Subcommands:
|
|
3019
|
-
* progress init Full snapshot — everything /rihal
|
|
3019
|
+
* progress init Full snapshot — everything /rihal-progress needs.
|
|
3020
3020
|
* progress bar --raw ASCII bar only (e.g. "[████░░░░] 50%").
|
|
3021
3021
|
* progress insights insights[] array (drift warnings, between-milestone detection).
|
|
3022
3022
|
* progress routes intent-tree routes[] for Next Up menu.
|
|
@@ -3162,7 +3162,7 @@ function cmdProgress(args) {
|
|
|
3162
3162
|
insights.push({
|
|
3163
3163
|
kind: 'between-milestones',
|
|
3164
3164
|
severity: 'info',
|
|
3165
|
-
message: 'All registered phases complete — effectively between milestones. Consider /rihal
|
|
3165
|
+
message: 'All registered phases complete — effectively between milestones. Consider /rihal-audit-milestone or /rihal-new-milestone.',
|
|
3166
3166
|
});
|
|
3167
3167
|
}
|
|
3168
3168
|
}
|
|
@@ -3184,7 +3184,7 @@ function cmdProgress(args) {
|
|
|
3184
3184
|
routes.push({
|
|
3185
3185
|
letter: 'A',
|
|
3186
3186
|
label: `Execute phase ${k} — unfinished plans`,
|
|
3187
|
-
command: `/rihal
|
|
3187
|
+
command: `/rihal-execute-phase ${k}`,
|
|
3188
3188
|
});
|
|
3189
3189
|
}
|
|
3190
3190
|
|
|
@@ -3196,7 +3196,7 @@ function cmdProgress(args) {
|
|
|
3196
3196
|
routes.push({
|
|
3197
3197
|
letter: 'B',
|
|
3198
3198
|
label: `Plan phase ${num} — researched, awaiting plan`,
|
|
3199
|
-
command: `/rihal
|
|
3199
|
+
command: `/rihal-plan-phase ${num}`,
|
|
3200
3200
|
});
|
|
3201
3201
|
}
|
|
3202
3202
|
|
|
@@ -3213,21 +3213,21 @@ function cmdProgress(args) {
|
|
|
3213
3213
|
routes.push({
|
|
3214
3214
|
letter: 'B',
|
|
3215
3215
|
label: `Plan phase ${k} — in progress without SPRINT.md`,
|
|
3216
|
-
command: `/rihal
|
|
3216
|
+
command: `/rihal-plan ${k}`,
|
|
3217
3217
|
});
|
|
3218
3218
|
}
|
|
3219
3219
|
|
|
3220
3220
|
// Route C — close out milestone if everything seems done
|
|
3221
3221
|
const allDone = statePhases.length > 0 && statePhases.every(p => p.status === 'complete' || p.completed);
|
|
3222
3222
|
if (allDone) {
|
|
3223
|
-
routes.push({ letter: 'C', label: 'Audit current milestone', command: '/rihal
|
|
3224
|
-
routes.push({ letter: 'C', label: 'Complete current milestone', command: '/rihal
|
|
3223
|
+
routes.push({ letter: 'C', label: 'Audit current milestone', command: '/rihal-audit-milestone' });
|
|
3224
|
+
routes.push({ letter: 'C', label: 'Complete current milestone', command: '/rihal-complete-milestone' });
|
|
3225
3225
|
}
|
|
3226
3226
|
|
|
3227
3227
|
// Fallback — nothing obvious: offer status
|
|
3228
3228
|
if (routes.length === 0) {
|
|
3229
|
-
routes.push({ letter: 'A', label: 'Check progress detail', command: '/rihal
|
|
3230
|
-
routes.push({ letter: 'B', label: 'Start a council on what to do next', command: '/rihal
|
|
3229
|
+
routes.push({ letter: 'A', label: 'Check progress detail', command: '/rihal-progress' });
|
|
3230
|
+
routes.push({ letter: 'B', label: 'Start a council on what to do next', command: '/rihal-council' });
|
|
3231
3231
|
}
|
|
3232
3232
|
|
|
3233
3233
|
return routes;
|
|
@@ -3242,6 +3242,40 @@ function cmdProgress(args) {
|
|
|
3242
3242
|
return `[${bar}] ${completed}/${total} (${pct}%)`;
|
|
3243
3243
|
}
|
|
3244
3244
|
|
|
3245
|
+
/**
|
|
3246
|
+
* Compute weighted progress that recognizes intermediate phase states.
|
|
3247
|
+
* Weights: has_context only = 0.15, has_research = 0.25, has plan = 0.5,
|
|
3248
|
+
* has verification or summary = 1.0.
|
|
3249
|
+
* Returns { weighted: number (0..total), pct: number (0..100) }.
|
|
3250
|
+
*/
|
|
3251
|
+
function computeWeightedProgress(stPhases, diskMap) {
|
|
3252
|
+
if (!stPhases.length) return { weighted: 0, pct: 0 };
|
|
3253
|
+
const norm = (k) => String(k ?? '').replace(/^0+(\d)/, '$1');
|
|
3254
|
+
let sum = 0;
|
|
3255
|
+
for (const p of stPhases) {
|
|
3256
|
+
const k = norm(phaseKey(p));
|
|
3257
|
+
if (p.status === 'complete' || p.completed) { sum += 1; continue; }
|
|
3258
|
+
const disk = diskMap[k] || diskMap[phaseKey(p)];
|
|
3259
|
+
if (!disk) continue;
|
|
3260
|
+
if (disk.summary_count > 0) { sum += 1; continue; }
|
|
3261
|
+
if (disk.has_verification) { sum += 0.85; continue; }
|
|
3262
|
+
if (disk.plan_count > 0) { sum += 0.5; continue; }
|
|
3263
|
+
if (disk.has_research) { sum += 0.25; continue; }
|
|
3264
|
+
if (disk.has_context) { sum += 0.15; continue; }
|
|
3265
|
+
}
|
|
3266
|
+
const total = Math.max(stPhases.length, 1);
|
|
3267
|
+
return { weighted: Math.round(sum * 100) / 100, pct: Math.round((sum / total) * 100) };
|
|
3268
|
+
}
|
|
3269
|
+
|
|
3270
|
+
function buildWeightedBar(stPhases, diskMap, total) {
|
|
3271
|
+
const { weighted, pct } = computeWeightedProgress(stPhases, diskMap);
|
|
3272
|
+
if (!total) return '[░░░░░░░░░░░░░░░░░░░░] 0/0 (0%)';
|
|
3273
|
+
const width = 20;
|
|
3274
|
+
const filled = Math.min(width, Math.round((weighted / total) * width));
|
|
3275
|
+
const bar = '█'.repeat(filled) + '░'.repeat(width - filled);
|
|
3276
|
+
return `[${bar}] ~${pct}% weighted`;
|
|
3277
|
+
}
|
|
3278
|
+
|
|
3245
3279
|
// Build the core snapshot once — all subcommands derive from it.
|
|
3246
3280
|
const state = readState();
|
|
3247
3281
|
const roadmapPhases = parseRoadmapPhases();
|
|
@@ -3268,6 +3302,7 @@ function cmdProgress(args) {
|
|
|
3268
3302
|
const currentPhase = state && state.current_phase;
|
|
3269
3303
|
const insights = detectInsights(state, roadmapPhases, diskByNum);
|
|
3270
3304
|
const routes = deriveRoutes(state, roadmapPhases, diskByNum);
|
|
3305
|
+
const { weighted: weightedCompleted, pct: weightedPct } = computeWeightedProgress(statePhases, diskByNum);
|
|
3271
3306
|
|
|
3272
3307
|
return {
|
|
3273
3308
|
ok: true,
|
|
@@ -3276,7 +3311,9 @@ function cmdProgress(args) {
|
|
|
3276
3311
|
current_phase: currentPhase,
|
|
3277
3312
|
phase_count: phaseCount,
|
|
3278
3313
|
completed_count: completedCount,
|
|
3314
|
+
weighted_progress: weightedPct,
|
|
3279
3315
|
bar: buildBar(completedCount, phaseCount),
|
|
3316
|
+
weighted_bar: buildWeightedBar(statePhases, diskByNum, phaseCount),
|
|
3280
3317
|
phases: (() => {
|
|
3281
3318
|
// Prefer ROADMAP-parsed phases when available; fall back to state.phases
|
|
3282
3319
|
// when the roadmap doesn't use a parseable format. Normalize "07" / "7" / 7.
|
|
@@ -3472,8 +3509,8 @@ function cmdGitignore(args) {
|
|
|
3472
3509
|
let sliceStart = start;
|
|
3473
3510
|
if (sliceStart > 0 && existing[sliceStart - 1] === '\n') sliceStart -= 1;
|
|
3474
3511
|
let sliceEnd = endIdx + END.length;
|
|
3475
|
-
if (existing[
|
|
3476
|
-
return existing.slice(0, sliceStart) + newBlock + existing.slice(
|
|
3512
|
+
if (existing[slice_end] === '\n') slice_end += 1;
|
|
3513
|
+
return existing.slice(0, sliceStart) + newBlock + existing.slice(slice_end);
|
|
3477
3514
|
}
|
|
3478
3515
|
|
|
3479
3516
|
if (!fs.existsSync(gitignorePath)) {
|
|
@@ -3688,7 +3725,7 @@ async function main() {
|
|
|
3688
3725
|
console.log(' state read → print full state.json');
|
|
3689
3726
|
console.log(' state get → alias for state read');
|
|
3690
3727
|
console.log(' state init --project <name> → create state.json if missing');
|
|
3691
|
-
console.log(' state set-phase <name> → set
|
|
3728
|
+
console.log(' state set-phase <name> → set current_phase, reset current_plan, append to phases[]');
|
|
3692
3729
|
console.log(' state advance-plan → increment current_plan counter');
|
|
3693
3730
|
console.log(' state record-execution --plan <p> --tasks <n> --duration <ms> --hash <h>');
|
|
3694
3731
|
console.log(' state add-decision "<summary>" → append to decisions[] + ~/.rihal/decisions.jsonl');
|
package/rihal/brain/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# rihal/brain — The Rihal Context Layer
|
|
2
2
|
|
|
3
|
-
This directory is populated on install (and on every `/rihal
|
|
3
|
+
This directory is populated on install (and on every `/rihal-update`) by `rihal-tools brain pull`. Its job is simple: pull Rihal's institutional knowledge — PR/commit/issue standards, architecture decisions, internal guides — into every Rihalian's project so their AI assistant already knows how Rihal builds.
|
|
4
4
|
|
|
5
5
|
## Structure
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ Content is pulled from three kinds of source:
|
|
|
22
22
|
|
|
23
23
|
## Update policy
|
|
24
24
|
|
|
25
|
-
- Local edits to any file under `rihal/brain/` are **overwritten** on every `/rihal
|
|
25
|
+
- Local edits to any file under `rihal/brain/` are **overwritten** on every `/rihal-update`. Rihal Code treats the upstream sources as the single source of truth. If the Rihal standard needs to change, the change happens upstream — then every Rihalian benefits.
|
|
26
26
|
- Per-invocation: `node .rihal/bin/rihal-tools.cjs brain pull`.
|
|
27
27
|
- Per project: runs automatically as part of `npx rihal-code install`.
|
|
28
28
|
|
|
@@ -13,7 +13,7 @@ Phrases like *"just write it autonomously"*, *"create the full thing ready to ex
|
|
|
13
13
|
There are exactly two ways to legitimately run a skill without halting at menus:
|
|
14
14
|
|
|
15
15
|
1. **Project-wide:** `.rihal/config.yaml` → `mode: yolo`. The config loader flags `yoloMode=true` in the runtime context; step files check this flag and may auto-advance.
|
|
16
|
-
2. **Per-invocation:** `/rihal
|
|
16
|
+
2. **Per-invocation:** `/rihal-do --auto <question>` on the router. The router sets `autoMode=true` and passes it to the dispatched skill.
|
|
17
17
|
|
|
18
18
|
If **neither** flag is set, halt is mandatory regardless of what the user's prompt text says.
|
|
19
19
|
|
|
@@ -34,4 +34,4 @@ That response invents a mode that does not exist and violates the halt invariant
|
|
|
34
34
|
|
|
35
35
|
## Correct Response
|
|
36
36
|
|
|
37
|
-
> ✅ Agent: *"I hear you want the PRD written end-to-end. The halt rule applies unless you set `mode: yolo` in `.rihal/config.yaml` or re-invoke via `/rihal
|
|
37
|
+
> ✅ Agent: *"I hear you want the PRD written end-to-end. The halt rule applies unless you set `mode: yolo` in `.rihal/config.yaml` or re-invoke via `/rihal-do --auto`. Here is the step-01 menu — pick Continue and I will drive each step concisely."*
|
|
@@ -28,7 +28,7 @@ This pattern is forbidden. A citation block without `WebFetch` evidence is a lie
|
|
|
28
28
|
|
|
29
29
|
## If the User Is Running Autonomously
|
|
30
30
|
|
|
31
|
-
`mode: yolo` and `/rihal
|
|
31
|
+
`mode: yolo` and `/rihal-do --auto` bypass halt-at-menu, but they do **not** bypass this rule. A fully-autonomous run still has to fetch every cited URL before writing the claim.
|
|
32
32
|
|
|
33
33
|
## Checklist Before Writing a Citation
|
|
34
34
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# State Sync Rule
|
|
2
2
|
|
|
3
|
-
Referenced by skills that write `ROADMAP.md`, `epics.md`, or sprint artifacts. These artifacts are not authoritative on their own — downstream workflows (`/rihal
|
|
3
|
+
Referenced by skills that write `ROADMAP.md`, `epics.md`, or sprint artifacts. These artifacts are not authoritative on their own — downstream workflows (`/rihal-status`, `/rihal-progress`, `/rihal-execute`) read `.rihal/state.json`. If you write a planning artifact and skip state sync, the project ends up with two divergent pictures.
|
|
4
4
|
|
|
5
5
|
## The Rule
|
|
6
6
|
|
|
@@ -29,15 +29,15 @@ If `rihal-tools.cjs` does not yet expose the needed subcommand, fall back to `st
|
|
|
29
29
|
## Verification After Sync
|
|
30
30
|
|
|
31
31
|
- `node .rihal/bin/rihal-tools.cjs state read` returns a phase count that matches the phase table in `ROADMAP.md`.
|
|
32
|
-
- `/rihal
|
|
32
|
+
- `/rihal-status` and `/rihal-progress`, run back-to-back, agree on the current milestone name and phase count.
|
|
33
33
|
|
|
34
34
|
## Why This Matters
|
|
35
35
|
|
|
36
36
|
Observed failure (rihal-code, social-poster-x install, Apr 2026):
|
|
37
37
|
|
|
38
|
-
- User ran `/rihal
|
|
38
|
+
- User ran `/rihal-create-epics-and-stories`.
|
|
39
39
|
- `ROADMAP.md` gained 10 phases; `epics.md` gained 62 stories.
|
|
40
40
|
- `.rihal/state.json` remained at the initial bootstrap with 1 phase.
|
|
41
|
-
- `/rihal
|
|
41
|
+
- `/rihal-status` showed 1 phase; `/rihal-progress` showed 10.
|
|
42
42
|
|
|
43
43
|
That divergence is what this rule exists to prevent.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-add-phase
|
|
3
3
|
description: "Add a new integer phase to the end of the current milestone. Auto-calculates the next phase number, creates the phase directory, and updates ROADMAP.md. Use when scope expands mid-milestone."
|
|
4
4
|
argument-hint: "<phase-name>"
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-add-tests
|
|
3
3
|
description: Generate unit and E2E tests for a completed phase based on its SUMMARY.md, CONTEXT.md, and implementation. Classifies ea
|
|
4
4
|
argument-hint: ""
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-audit-uat
|
|
3
3
|
description: Cross-phase audit of all UAT and verification files. Finds every outstanding item (pending, skipped, blocked, human_need
|
|
4
4
|
argument-hint: ""
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Agent
|
package/rihal/commands/audit.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-audit
|
|
3
3
|
description: Single audit entry point — asks what to audit (phase, milestone, UAT, code, fix, work) and dispatches to the right subroute. Honours .rihal/config.yaml mode.
|
|
4
4
|
argument-hint: "[phase | milestone | uat | code | fix | work] [...subroute args]"
|
|
5
5
|
allowed-tools: Read, Write, Bash, AskUserQuestion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-autonomous
|
|
3
3
|
description: Execute remaining phases autonomously with minimal human intervention. Runs plan → execute → verify cycles for unfinished work, pausing at checkpoints and failures.
|
|
4
4
|
argument-hint: "[--from N] [--to M] [--only N] [--interactive]"
|
|
5
5
|
allowed-tools: Read, Bash, Agent, AskUserQuestion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-brainstorm
|
|
3
3
|
description: Guided brainstorming session — select a method, apply it to your challenge, generate ideas systematically
|
|
4
4
|
argument-hint: "<challenge> [--method=METHOD] [--people=N] [--personas=LIST]"
|
|
5
5
|
allowed-tools:
|
package/rihal/commands/chain.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-check-todos
|
|
3
3
|
description: List all pending todos, allow selection, load full context for the selected todo, and route to appropriate action.
|
|
4
4
|
argument-hint: ""
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-checkpoint-preview
|
|
3
3
|
description: Human-in-the-loop change review — makes sense of a diff, focuses attention where it matters, and walks through testing. Use when you say "checkpoint", "walk me through this", or "human review".
|
|
4
4
|
argument-hint: "[<branch-or-diff>]"
|
|
5
5
|
allowed-tools:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
3
|
-
description: "Archive completed milestone phase directories into .planning/milestones/. Run after /rihal
|
|
2
|
+
name: rihal-cleanup
|
|
3
|
+
description: "Archive completed milestone phase directories into .planning/milestones/. Run after /rihal-complete-milestone to keep .planning/ tidy. Shows a dry-run summary before moving anything."
|
|
4
4
|
argument-hint: "[--dry-run]"
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
6
6
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: rihal
|
|
2
|
+
name: rihal-code-review
|
|
3
3
|
description: Review source files for bugs, security issues, and code quality problems.
|
|
4
4
|
argument-hint: "<phase> [--depth=quick|standard|deep] [--files=file1,file2,...] [--karpathy] [--attack] [--edge-cases]"
|
|
5
5
|
allowed-tools:
|