@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
package/cli/install.js
CHANGED
|
@@ -498,7 +498,7 @@ function copyDirRecursive(source, dest) {
|
|
|
498
498
|
|
|
499
499
|
/**
|
|
500
500
|
* Seed .planning/ with starter ROADMAP.md + STATE.md + PROJECT.md so
|
|
501
|
-
* workflows work immediately after install. User can /rihal
|
|
501
|
+
* workflows work immediately after install. User can /rihal-sprint-planning
|
|
502
502
|
* on a fresh install without manual setup.
|
|
503
503
|
*
|
|
504
504
|
* Only seeds if .planning/ROADMAP.md doesn't already exist (preserves user data).
|
|
@@ -548,7 +548,7 @@ function seedStarterPlanning(target, projectName) {
|
|
|
548
548
|
`---\n\n` +
|
|
549
549
|
`## Decisions\n\n_None yet._\n\n` +
|
|
550
550
|
`## Blockers\n\n_None._\n\n` +
|
|
551
|
-
`## Next Action\n\nSay "plan a sprint" or run \`/rihal
|
|
551
|
+
`## Next Action\n\nSay "plan a sprint" or run \`/rihal-sprint-planning\` to break Phase 01 into stories.\n`
|
|
552
552
|
);
|
|
553
553
|
|
|
554
554
|
// Also pre-seed .rihal/state.json with Phase 01 so sprint tools work
|
|
@@ -845,7 +845,7 @@ function buildInstallPlan(ide = 'claude', target = process.cwd()) {
|
|
|
845
845
|
plan.push({ src: f, rel: path.join(relBin, rel), executable: f.endsWith('.cjs') });
|
|
846
846
|
}
|
|
847
847
|
|
|
848
|
-
// .rihal/templates/projects/ — starter templates consumed by /rihal
|
|
848
|
+
// .rihal/templates/projects/ — starter templates consumed by /rihal-from-template
|
|
849
849
|
const projectTemplatesSrc = path.join(SOURCE_ROOT, 'templates', 'projects');
|
|
850
850
|
const relProjectTemplates = path.relative(target, path.join(target, '.rihal', 'templates', 'projects'));
|
|
851
851
|
for (const f of walkFiles(projectTemplatesSrc)) {
|
|
@@ -1572,7 +1572,7 @@ async function install(opts) {
|
|
|
1572
1572
|
console.log('');
|
|
1573
1573
|
console.log(' ' + warn('config.yaml has validation errors:'));
|
|
1574
1574
|
for (const e of validation.errors) console.log(pc.yellow(e));
|
|
1575
|
-
console.log(dim(' → Edit .rihal/config.yaml to fix, then run /rihal
|
|
1575
|
+
console.log(dim(' → Edit .rihal/config.yaml to fix, then run /rihal-status'));
|
|
1576
1576
|
}
|
|
1577
1577
|
} catch { /* best-effort */ }
|
|
1578
1578
|
|
|
@@ -1593,16 +1593,16 @@ async function install(opts) {
|
|
|
1593
1593
|
ensureDir(path.join(opts.target, '.planning', 'council-sessions'));
|
|
1594
1594
|
|
|
1595
1595
|
// .rihal/context/ — seed stub files so doctor doesn't report "never initialized"
|
|
1596
|
-
// The /rihal
|
|
1596
|
+
// The /rihal-init slash command populates these with real project content.
|
|
1597
1597
|
const contextDir = path.join(opts.target, '.rihal', 'context');
|
|
1598
1598
|
ensureDir(contextDir);
|
|
1599
1599
|
const activeCtx = path.join(contextDir, 'active.md');
|
|
1600
1600
|
const briefCtx = path.join(contextDir, 'project-brief.md');
|
|
1601
1601
|
if (!fs.existsSync(activeCtx)) {
|
|
1602
|
-
fs.writeFileSync(activeCtx, '# Active Context\n\n_Run `/rihal
|
|
1602
|
+
fs.writeFileSync(activeCtx, '# Active Context\n\n_Run `/rihal-init` inside your AI editor to populate this file._\n');
|
|
1603
1603
|
}
|
|
1604
1604
|
if (!fs.existsSync(briefCtx)) {
|
|
1605
|
-
fs.writeFileSync(briefCtx, '# Project Brief\n\n_Run `/rihal
|
|
1605
|
+
fs.writeFileSync(briefCtx, '# Project Brief\n\n_Run `/rihal-init` inside your AI editor to populate this file._\n');
|
|
1606
1606
|
}
|
|
1607
1607
|
|
|
1608
1608
|
// ~/.rihal/agents/ global agents directory
|
|
@@ -1619,7 +1619,24 @@ async function install(opts) {
|
|
|
1619
1619
|
|
|
1620
1620
|
// Install v1-style phrase-activated skills (scaffold-project, create-prd,
|
|
1621
1621
|
// retrospective, etc.) into .claude/skills/ alongside the v2 agents/commands.
|
|
1622
|
-
|
|
1622
|
+
let skillsInstalled = installSkills(PACKAGE_ROOT, opts.target);
|
|
1623
|
+
|
|
1624
|
+
// Generate install-time skill stubs that mirror sidebar-worthy slash commands.
|
|
1625
|
+
// Source codebase stays clean — these stubs only exist at the install
|
|
1626
|
+
// destination, marked with `generated: true` so they refresh idempotently.
|
|
1627
|
+
// See cli/generate-command-skills.cjs for rationale.
|
|
1628
|
+
try {
|
|
1629
|
+
const { main: generateCommandSkills } = require(path.join(PACKAGE_ROOT, 'cli', 'generate-command-skills.cjs'));
|
|
1630
|
+
const stubsDir = path.join(opts.target, '.claude', 'skills');
|
|
1631
|
+
const result = generateCommandSkills(PACKAGE_ROOT, stubsDir, readPackageVersion());
|
|
1632
|
+
if (result.generated > 0) {
|
|
1633
|
+
console.log(' ' + dim(`${result.generated} sidebar skill stub${result.generated === 1 ? '' : 's'} generated for command discoverability`));
|
|
1634
|
+
skillsInstalled += result.generated;
|
|
1635
|
+
}
|
|
1636
|
+
} catch (err) {
|
|
1637
|
+
// Non-fatal: install succeeds without sidebar stubs
|
|
1638
|
+
console.log(' ' + dim(`(sidebar stub generation skipped: ${err.message})`));
|
|
1639
|
+
}
|
|
1623
1640
|
|
|
1624
1641
|
// Seed .planning/ with starter ROADMAP + STATE so workflows work immediately
|
|
1625
1642
|
const starterSeeded = seedStarterPlanning(opts.target, opts.projectName);
|
|
@@ -1737,13 +1754,13 @@ async function install(opts) {
|
|
|
1737
1754
|
console.log(` ${bold('Next:')}`);
|
|
1738
1755
|
console.log(` cd ${opts.target}`);
|
|
1739
1756
|
console.log(' claude # start Claude Code (reload window if already open)');
|
|
1740
|
-
console.log(' /rihal
|
|
1741
|
-
console.log(' /rihal
|
|
1742
|
-
console.log(' /rihal
|
|
1757
|
+
console.log(' /rihal-progress # where you are, what\'s next');
|
|
1758
|
+
console.log(' /rihal-do # interactive command picker');
|
|
1759
|
+
console.log(' /rihal-council <q> # multi-agent strategic answer');
|
|
1743
1760
|
console.log('');
|
|
1744
1761
|
console.log(dim(' Refresh anytime:'));
|
|
1745
1762
|
console.log(dim(' npx @hanzlaa/rcode@latest install # pull the latest rcode + brain'));
|
|
1746
|
-
console.log(dim(` /rihal
|
|
1763
|
+
console.log(dim(` /rihal-update v${version} # pin rcode to a specific version`));
|
|
1747
1764
|
console.log('');
|
|
1748
1765
|
console.log(dim(' Customize without losing changes on update:'));
|
|
1749
1766
|
console.log(dim(' Create <name>.local.md siblings (e.g. .claude/agents/rihal-waleed.local.md)'));
|
package/cli/lib/memory-bank.cjs
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
*
|
|
10
10
|
* This module detects staleness programmatically by comparing a project
|
|
11
11
|
* fingerprint (git HEAD, package manifest hash, top-level structure hash)
|
|
12
|
-
* against one stored in .rihal/state.json at the last /rihal
|
|
12
|
+
* against one stored in .rihal/state.json at the last /rihal-init run.
|
|
13
13
|
*
|
|
14
14
|
* It is intentionally READ-ONLY + write-fingerprint. The actual scan and
|
|
15
|
-
* rewrite of the memory bank is done by Claude when /rihal
|
|
15
|
+
* rewrite of the memory bank is done by Claude when /rihal-init runs —
|
|
16
16
|
* this library only tells callers WHEN to refresh, not HOW.
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -186,7 +186,7 @@ function readState(cwd) {
|
|
|
186
186
|
|
|
187
187
|
/**
|
|
188
188
|
* Persist the init fingerprint into .rihal/state.json under `memory_bank`.
|
|
189
|
-
* Called by /rihal
|
|
189
|
+
* Called by /rihal-init (via rihal-code context --refresh) after a scan
|
|
190
190
|
* rewrites context/active.md + context/project-brief.md.
|
|
191
191
|
*/
|
|
192
192
|
function writeFingerprint(cwd) {
|
|
@@ -238,7 +238,7 @@ function checkStaleness(cwd) {
|
|
|
238
238
|
if (!context_files.active && !context_files.brief) {
|
|
239
239
|
return {
|
|
240
240
|
status: 'never',
|
|
241
|
-
reasons: ['memory bank has never been initialized — run /rihal
|
|
241
|
+
reasons: ['memory bank has never been initialized — run /rihal-init'],
|
|
242
242
|
current,
|
|
243
243
|
stored,
|
|
244
244
|
context_files,
|
|
@@ -264,7 +264,7 @@ function checkStaleness(cwd) {
|
|
|
264
264
|
if (!stored) {
|
|
265
265
|
return {
|
|
266
266
|
status: 'stale',
|
|
267
|
-
reasons: ['run /rihal
|
|
267
|
+
reasons: ['run /rihal-init in your editor to populate project context'],
|
|
268
268
|
current,
|
|
269
269
|
stored,
|
|
270
270
|
context_files,
|
package/cli/set-mode.js
CHANGED
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Affects:
|
|
14
14
|
* - Workflow step files ("halt at menu" vs "pick default and continue")
|
|
15
|
-
* - /rihal
|
|
15
|
+
* - /rihal-kickoff next-step menu (interactive vs auto-continue)
|
|
16
16
|
* - github-sync confirmation prompts (yolo still requires --force-yolo
|
|
17
17
|
* for github mutations — see docs/adr/0001-github-sync-as-cli.md)
|
|
18
|
-
* - /rihal
|
|
18
|
+
* - /rihal-pause and /rihal-resume (yolo skips the confirmation prompt
|
|
19
19
|
* on resume; guided always asks)
|
|
20
20
|
* - All agent skill files that read communication_mode from config
|
|
21
21
|
*/
|
package/cli/uninstall.js
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* --delete-state Also delete .rihal/ (skip prompt)
|
|
20
20
|
* --purge / --all Wipe everything — editor files,
|
|
21
21
|
* .rihal/, .planning/, gitignore block.
|
|
22
|
-
* Use when you want /rihal
|
|
22
|
+
* Use when you want /rihal-init to
|
|
23
23
|
* report "fresh" on next install.
|
|
24
24
|
* --yes / -y Skip the main confirmation
|
|
25
25
|
*/
|
|
@@ -49,7 +49,7 @@ function parseArgs(args) {
|
|
|
49
49
|
opts.yes = true;
|
|
50
50
|
} else if (arg === '--purge' || arg === '--all') {
|
|
51
51
|
// --purge implies --delete-state and removes .planning/ + gitignore block.
|
|
52
|
-
// Use this when you want a clean slate so /rihal
|
|
52
|
+
// Use this when you want a clean slate so /rihal-init reports "fresh" next time.
|
|
53
53
|
opts.purge = true;
|
|
54
54
|
opts.deleteState = true;
|
|
55
55
|
}
|
|
@@ -596,7 +596,7 @@ async function runUninstall(args) {
|
|
|
596
596
|
console.log(` - phases, decisions, progress, artifacts, context`);
|
|
597
597
|
console.log(` - ${plan.stateDir.files} files total`);
|
|
598
598
|
console.log();
|
|
599
|
-
console.log(` If you keep it: /rihal
|
|
599
|
+
console.log(` If you keep it: /rihal-init will report "already configured"`);
|
|
600
600
|
console.log(` and reuse your existing config + history on next install.`);
|
|
601
601
|
console.log(` If you delete it: next install starts fresh — no carry-over.`);
|
|
602
602
|
console.log();
|
|
@@ -652,10 +652,10 @@ async function runUninstall(args) {
|
|
|
652
652
|
}
|
|
653
653
|
|
|
654
654
|
// Hint about the purge flag if the user kept state — closes the user's
|
|
655
|
-
// most common confusion: "I uninstalled but /rihal
|
|
655
|
+
// most common confusion: "I uninstalled but /rihal-init still says configured."
|
|
656
656
|
if (plan.stateDir && fs.existsSync(path.join(cwd, '.rihal'))) {
|
|
657
657
|
console.log();
|
|
658
|
-
console.log(`ℹ .rihal/ state was preserved. /rihal
|
|
658
|
+
console.log(`ℹ .rihal/ state was preserved. /rihal-init will detect this on reinstall.`);
|
|
659
659
|
console.log(` For a fully clean slate next time, use: rcode uninstall --purge`);
|
|
660
660
|
}
|
|
661
661
|
|
package/dist/rcode.js
CHANGED
|
@@ -16183,7 +16183,7 @@ _None._
|
|
|
16183
16183
|
|
|
16184
16184
|
## Next Action
|
|
16185
16185
|
|
|
16186
|
-
Say "plan a sprint" or run \`/rihal
|
|
16186
|
+
Say "plan a sprint" or run \`/rihal-sprint-planning\` to break Phase 01 into stories.
|
|
16187
16187
|
`
|
|
16188
16188
|
);
|
|
16189
16189
|
const rihalStateJson = path2.join(target, ".rihal", "state.json");
|
|
@@ -16985,7 +16985,7 @@ Say "plan a sprint" or run \`/rihal:sprint-planning\` to break Phase 01 into sto
|
|
|
16985
16985
|
console.log("");
|
|
16986
16986
|
console.log(" " + warn("config.yaml has validation errors:"));
|
|
16987
16987
|
for (const e of validation.errors) console.log(pc.yellow(e));
|
|
16988
|
-
console.log(dim(" \u2192 Edit .rihal/config.yaml to fix, then run /rihal
|
|
16988
|
+
console.log(dim(" \u2192 Edit .rihal/config.yaml to fix, then run /rihal-status"));
|
|
16989
16989
|
}
|
|
16990
16990
|
} catch {
|
|
16991
16991
|
}
|
|
@@ -17004,10 +17004,10 @@ Say "plan a sprint" or run \`/rihal:sprint-planning\` to break Phase 01 into sto
|
|
|
17004
17004
|
const activeCtx = path2.join(contextDir, "active.md");
|
|
17005
17005
|
const briefCtx = path2.join(contextDir, "project-brief.md");
|
|
17006
17006
|
if (!fs2.existsSync(activeCtx)) {
|
|
17007
|
-
fs2.writeFileSync(activeCtx, "# Active Context\n\n_Run `/rihal
|
|
17007
|
+
fs2.writeFileSync(activeCtx, "# Active Context\n\n_Run `/rihal-init` inside your AI editor to populate this file._\n");
|
|
17008
17008
|
}
|
|
17009
17009
|
if (!fs2.existsSync(briefCtx)) {
|
|
17010
|
-
fs2.writeFileSync(briefCtx, "# Project Brief\n\n_Run `/rihal
|
|
17010
|
+
fs2.writeFileSync(briefCtx, "# Project Brief\n\n_Run `/rihal-init` inside your AI editor to populate this file._\n");
|
|
17011
17011
|
}
|
|
17012
17012
|
const globalAgentsDir = path2.join(os.homedir(), ".rihal", "agents");
|
|
17013
17013
|
ensureDir(globalAgentsDir);
|
|
@@ -17015,7 +17015,18 @@ Say "plan a sprint" or run \`/rihal:sprint-planning\` to break Phase 01 into sto
|
|
|
17015
17015
|
path2.join(configDir, "files-manifest.csv"),
|
|
17016
17016
|
generateFilesManifest(plan, opts.target)
|
|
17017
17017
|
);
|
|
17018
|
-
|
|
17018
|
+
let skillsInstalled = installSkills(PACKAGE_ROOT2, opts.target);
|
|
17019
|
+
try {
|
|
17020
|
+
const { main: generateCommandSkills } = require(path2.join(PACKAGE_ROOT2, "cli", "generate-command-skills.cjs"));
|
|
17021
|
+
const stubsDir = path2.join(opts.target, ".claude", "skills");
|
|
17022
|
+
const result = generateCommandSkills(PACKAGE_ROOT2, stubsDir, readPackageVersion());
|
|
17023
|
+
if (result.generated > 0) {
|
|
17024
|
+
console.log(" " + dim(`${result.generated} sidebar skill stub${result.generated === 1 ? "" : "s"} generated for command discoverability`));
|
|
17025
|
+
skillsInstalled += result.generated;
|
|
17026
|
+
}
|
|
17027
|
+
} catch (err) {
|
|
17028
|
+
console.log(" " + dim(`(sidebar stub generation skipped: ${err.message})`));
|
|
17029
|
+
}
|
|
17019
17030
|
const starterSeeded = seedStarterPlanning(opts.target, opts.projectName);
|
|
17020
17031
|
installBrainScaffold(PACKAGE_ROOT2, opts.target);
|
|
17021
17032
|
const gitignoreReport = ensureRcodeGitignore(opts.target, { commitPlanning: opts.commitPlanning });
|
|
@@ -17113,13 +17124,13 @@ Say "plan a sprint" or run \`/rihal:sprint-planning\` to break Phase 01 into sto
|
|
|
17113
17124
|
console.log(` ${bold("Next:")}`);
|
|
17114
17125
|
console.log(` cd ${opts.target}`);
|
|
17115
17126
|
console.log(" claude # start Claude Code (reload window if already open)");
|
|
17116
|
-
console.log(" /rihal
|
|
17117
|
-
console.log(" /rihal
|
|
17118
|
-
console.log(" /rihal
|
|
17127
|
+
console.log(" /rihal-progress # where you are, what's next");
|
|
17128
|
+
console.log(" /rihal-do # interactive command picker");
|
|
17129
|
+
console.log(" /rihal-council <q> # multi-agent strategic answer");
|
|
17119
17130
|
console.log("");
|
|
17120
17131
|
console.log(dim(" Refresh anytime:"));
|
|
17121
17132
|
console.log(dim(" npx @hanzlaa/rcode@latest install # pull the latest rcode + brain"));
|
|
17122
|
-
console.log(dim(` /rihal
|
|
17133
|
+
console.log(dim(` /rihal-update v${version} # pin rcode to a specific version`));
|
|
17123
17134
|
console.log("");
|
|
17124
17135
|
console.log(dim(" Customize without losing changes on update:"));
|
|
17125
17136
|
console.log(dim(" Create <name>.local.md siblings (e.g. .claude/agents/rihal-waleed.local.md)"));
|
|
@@ -18474,7 +18485,7 @@ var require_uninstall = __commonJS({
|
|
|
18474
18485
|
console.log(` - phases, decisions, progress, artifacts, context`);
|
|
18475
18486
|
console.log(` - ${plan.stateDir.files} files total`);
|
|
18476
18487
|
console.log();
|
|
18477
|
-
console.log(` If you keep it: /rihal
|
|
18488
|
+
console.log(` If you keep it: /rihal-init will report "already configured"`);
|
|
18478
18489
|
console.log(` and reuse your existing config + history on next install.`);
|
|
18479
18490
|
console.log(` If you delete it: next install starts fresh \u2014 no carry-over.`);
|
|
18480
18491
|
console.log();
|
|
@@ -18517,7 +18528,7 @@ var require_uninstall = __commonJS({
|
|
|
18517
18528
|
}
|
|
18518
18529
|
if (plan.stateDir && fs2.existsSync(path2.join(cwd, ".rihal"))) {
|
|
18519
18530
|
console.log();
|
|
18520
|
-
console.log(`\u2139 .rihal/ state was preserved. /rihal
|
|
18531
|
+
console.log(`\u2139 .rihal/ state was preserved. /rihal-init will detect this on reinstall.`);
|
|
18521
18532
|
console.log(` For a fully clean slate next time, use: rcode uninstall --purge`);
|
|
18522
18533
|
}
|
|
18523
18534
|
console.log(`
|
|
@@ -18805,7 +18816,7 @@ var require_memory_bank = __commonJS({
|
|
|
18805
18816
|
if (!context_files.active && !context_files.brief) {
|
|
18806
18817
|
return {
|
|
18807
18818
|
status: "never",
|
|
18808
|
-
reasons: ["memory bank has never been initialized \u2014 run /rihal
|
|
18819
|
+
reasons: ["memory bank has never been initialized \u2014 run /rihal-init"],
|
|
18809
18820
|
current,
|
|
18810
18821
|
stored,
|
|
18811
18822
|
context_files
|
|
@@ -18826,7 +18837,7 @@ var require_memory_bank = __commonJS({
|
|
|
18826
18837
|
if (!stored) {
|
|
18827
18838
|
return {
|
|
18828
18839
|
status: "stale",
|
|
18829
|
-
reasons: ["run /rihal
|
|
18840
|
+
reasons: ["run /rihal-init in your editor to populate project context"],
|
|
18830
18841
|
current,
|
|
18831
18842
|
stored,
|
|
18832
18843
|
context_files
|
|
@@ -19030,7 +19041,7 @@ var require_doctor = __commonJS({
|
|
|
19030
19041
|
checks.push({
|
|
19031
19042
|
label: "Memory bank",
|
|
19032
19043
|
status: "warn",
|
|
19033
|
-
message: "never initialized (run /rihal
|
|
19044
|
+
message: "never initialized (run /rihal-init to populate)"
|
|
19034
19045
|
});
|
|
19035
19046
|
} else {
|
|
19036
19047
|
checks.push({
|
|
@@ -19766,7 +19777,7 @@ var require_context = __commonJS({
|
|
|
19766
19777
|
}
|
|
19767
19778
|
console.log();
|
|
19768
19779
|
if (report.status !== "fresh") {
|
|
19769
|
-
console.log(` \u27A1 Refresh with: /rihal
|
|
19780
|
+
console.log(` \u27A1 Refresh with: /rihal-init (in your editor)`);
|
|
19770
19781
|
console.log();
|
|
19771
19782
|
}
|
|
19772
19783
|
}
|
|
@@ -19798,7 +19809,7 @@ if command -v rcode >/dev/null 2>&1; then
|
|
|
19798
19809
|
output=$(rcode context --check 2>&1)
|
|
19799
19810
|
if [ $? -ne 0 ]; then
|
|
19800
19811
|
echo ""
|
|
19801
|
-
echo "\u26A0 Rihal memory bank is stale \u2014 run /rihal
|
|
19812
|
+
echo "\u26A0 Rihal memory bank is stale \u2014 run /rihal-init in your editor to refresh."
|
|
19802
19813
|
echo " $(echo "$output" | grep '\u2022' | head -1 | sed 's/^ *//')"
|
|
19803
19814
|
fi
|
|
19804
19815
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzlaa/rcode",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "rcode — the memory bank for AI-driven SaaS teams. Persistent project context, distinctive engineering personas, and phase-based workflows. Built by Rihal. Works in Claude Code, Cursor, Gemini, VS Code, and Antigravity.",
|
|
5
5
|
"main": "cli/index.js",
|
|
6
6
|
"bin": {
|
package/rihal/DOCS-AUDIT.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DOCS-AUDIT.md (per-project artefact)
|
|
2
2
|
|
|
3
|
-
This file is generated by `/rihal
|
|
3
|
+
This file is generated by `/rihal-document-project` into the project root
|
|
4
4
|
as `DOCS-AUDIT.md`. The shipped reference here just defines the schema:
|
|
5
5
|
|
|
6
6
|
- **Inventory:** every doc file (path, last-touched, owner, freshness).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-ahmed
|
|
3
|
-
description: Technology & Development Director — spawned by /rihal
|
|
3
|
+
description: Technology & Development Director — spawned by /rihal-council for delivery timelines, engineering standards, DORA metrics, cross-team coordination, RACI matrices, and tech debt prioritization. Bridges CTO vision (Waleed) to execution (Nasser). Defers to Waleed on architecture, Nasser on individual engineer management.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
color: blue
|
|
6
6
|
---
|
|
@@ -17,7 +17,7 @@ You are **Dalil (دليل) — Codebase Scout** 🧭. The name means "guide" in
|
|
|
17
17
|
|
|
18
18
|
**Honesty about scope is the core of this role.** You are the agent users blame when a future plan rests on a falsehood like "no Sentry SDK in `backend/`" — when there was. Your Scan Scope section exists so that lie can never happen again. If you didn't search a directory, say so. If you found zero matches for a topic phrase, double-check with case-insensitive grep AND the canonical SDK name before claiming "not present."
|
|
19
19
|
|
|
20
|
-
You are spawned by `/rihal
|
|
20
|
+
You are spawned by `/rihal-scan` and `/rihal-map-codebase` with one of four focus areas:
|
|
21
21
|
- **tech**: Analyze technology stack and external integrations → write STACK.md and INTEGRATIONS.md
|
|
22
22
|
- **arch**: Analyze architecture and file structure → write ARCHITECTURE.md and STRUCTURE.md
|
|
23
23
|
- **quality**: Analyze coding conventions and testing patterns → write CONVENTIONS.md and TESTING.md
|
|
@@ -32,7 +32,7 @@ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool t
|
|
|
32
32
|
<why_this_matters>
|
|
33
33
|
**These documents are consumed by other rihal commands:**
|
|
34
34
|
|
|
35
|
-
**`/rihal
|
|
35
|
+
**`/rihal-plan`** loads relevant codebase docs when creating implementation plans:
|
|
36
36
|
| Phase Type | Documents Loaded |
|
|
37
37
|
|------------|------------------|
|
|
38
38
|
| UI, frontend, components | CONVENTIONS.md, STRUCTURE.md |
|
|
@@ -43,7 +43,7 @@ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool t
|
|
|
43
43
|
| refactor, cleanup | CONCERNS.md, ARCHITECTURE.md |
|
|
44
44
|
| setup, config | STACK.md, STRUCTURE.md |
|
|
45
45
|
|
|
46
|
-
**`/rihal
|
|
46
|
+
**`/rihal-execute`** references codebase docs to:
|
|
47
47
|
- Follow existing conventions when writing code
|
|
48
48
|
- Know where to place new files (STRUCTURE.md)
|
|
49
49
|
- Match testing patterns (TESTING.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-debugger
|
|
3
|
-
description: Investigates bugs using scientific method, manages debug sessions, handles checkpoints. Spawned by /rihal
|
|
3
|
+
description: Investigates bugs using scientific method, manages debug sessions, handles checkpoints. Spawned by /rihal-debug orchestrator.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
5
|
color: orange
|
|
6
6
|
---
|
|
@@ -14,7 +14,7 @@ color: orange
|
|
|
14
14
|
Rihal debugger. Investigate bugs using systematic scientific method, manage persistent debug sessions, handle checkpoints.
|
|
15
15
|
|
|
16
16
|
**Spawned by:**
|
|
17
|
-
- `/rihal
|
|
17
|
+
- `/rihal-debug` command (interactive debugging)
|
|
18
18
|
- `diagnose-issues` workflow (parallel UAT diagnosis)
|
|
19
19
|
|
|
20
20
|
**Mandatory Initial Read:** If prompt contains `<files_to_read>`, read every file listed before any other action.
|
|
@@ -3,7 +3,7 @@ name: rihal-fatima
|
|
|
3
3
|
description: |
|
|
4
4
|
QA Lead — for test strategy, coverage gaps, release readiness, regression risk,
|
|
5
5
|
flaky tests, "is this production-ready", quality gates, edge case enumeration.
|
|
6
|
-
Spawned by /rihal
|
|
6
|
+
Spawned by /rihal-council, sprint-checker, release-gate dispatch.
|
|
7
7
|
Activates: "what could break", quality gate, release go/no-go, soak window,
|
|
8
8
|
rollback plan, post-mortem framing, "talk to Fatima", P0 sign-off.
|
|
9
9
|
Do NOT use for: market / discovery (Mariam), architecture (Waleed), strategic
|
|
@@ -60,7 +60,7 @@ Always read on activation:
|
|
|
60
60
|
|
|
61
61
|
If the question is market / discovery / research with no code, plan, or artifact:
|
|
62
62
|
- **Council mode:** state once you'll wait for plan / code, then stay silent.
|
|
63
|
-
- **Solo via /rihal
|
|
63
|
+
- **Solo via /rihal-discuss:** suggest `/rihal-discuss mariam` for market questions. Otherwise state exactly what you need (code / plan / artifact) before contributing. Do not guess.
|
|
64
64
|
|
|
65
65
|
## Redirects
|
|
66
66
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-haitham
|
|
3
3
|
description: |
|
|
4
|
-
Senior Frontend Engineer — spawned by /rihal
|
|
4
|
+
Senior Frontend Engineer — spawned by /rihal-council, /rihal-plan, frontend
|
|
5
5
|
story execution, and any UI/component dispatch.
|
|
6
6
|
Activates for: React, Next.js App Router, component design, Tailwind / CSS,
|
|
7
7
|
RTL / Arabic layouts, accessibility (a11y), keyboard navigation, screen-
|
|
@@ -118,7 +118,7 @@ Always read on activation:
|
|
|
118
118
|
**Negative routing** — Out of scope
|
|
119
119
|
> *"Should the Add Lead form be a modal or a side panel?"*
|
|
120
120
|
>
|
|
121
|
-
> 🎨 **Haitham:** UX flow decision — Layla's lane. I'll implement whichever pattern she picks. `/rihal
|
|
121
|
+
> 🎨 **Haitham:** UX flow decision — Layla's lane. I'll implement whichever pattern she picks. `/rihal-discuss layla`.
|
|
122
122
|
|
|
123
123
|
## Redirects
|
|
124
124
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-khalid
|
|
3
|
-
description: DevOps & Infrastructure Engineer — spawned by /rihal
|
|
3
|
+
description: DevOps & Infrastructure Engineer — spawned by /rihal-council for deployment pipelines, CI/CD, container orchestration, cloud infrastructure, monitoring, and release engineering questions. Defers to Waleed on architecture-level infra decisions, Fatima on release gates, Yousef on backend service configuration.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
color: orange
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-layla
|
|
3
|
-
description: UX Designer — spawned by /rihal
|
|
3
|
+
description: UX Designer — spawned by /rihal-council for user experience design, interaction flows, design systems, accessibility audits, and usability reviews. Defers to Haitham on frontend implementation, Waleed on technical feasibility, Zahra on branding, Fatima on visual regression testing.
|
|
4
4
|
tools: Read, Grep, Glob, WebFetch
|
|
5
5
|
color: cyan
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-nasser
|
|
3
|
-
description: Software Engineering Manager — spawned by /rihal
|
|
3
|
+
description: Software Engineering Manager — spawned by /rihal-council for people operations, 1:1 prep, hiring plans, growth conversations, team health, burnout detection, and squad composition questions. Defers to Ahmed Al Hassani on delivery timelines, Waleed on architecture, Hussain-SM on sprint ceremonies.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
color: yellow
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-noor
|
|
3
|
-
description: Technical Writer & Presentation Lead — spawned by /rihal
|
|
3
|
+
description: Technical Writer & Presentation Lead — spawned by /rihal-council and /rihal-docs-update for README files, API docs, architecture diagrams (Mermaid), changelogs, migration guides, inline code comments, pitch decks, and blog posts. Defers to Hussain-PM on PRD content, Hanzla on code implementation details, Sadiq on strategic framing.
|
|
4
4
|
tools: Read, Write, Edit, Grep, Glob, Bash, WebFetch
|
|
5
5
|
color: teal
|
|
6
6
|
---
|
|
@@ -10,7 +10,7 @@ color: #8B5CF6
|
|
|
10
10
|
@.rihal/references/no-unauthorized-git-ops.md
|
|
11
11
|
|
|
12
12
|
<role>
|
|
13
|
-
Rihal Nyquist auditor. Spawned by /rihal
|
|
13
|
+
Rihal Nyquist auditor. Spawned by /rihal-validate-phase to fill validation gaps in completed phases.
|
|
14
14
|
|
|
15
15
|
For each gap in `<gaps>`: generate minimal behavioral test, run it, debug if failing (max 3 iterations), report results.
|
|
16
16
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-omar
|
|
3
3
|
description: |
|
|
4
|
-
Software Engineer (generalist) — spawned by /rihal
|
|
4
|
+
Software Engineer (generalist) — spawned by /rihal-council, story execution
|
|
5
5
|
pairings, and any cross-stack implementation work.
|
|
6
6
|
Activates for: implementing stories that span frontend + backend, picking
|
|
7
7
|
up small subtasks delegated by Hanzla, bug-fix runs, regression tests,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-phase-researcher
|
|
3
|
-
description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by rihal-planner. Spawned by /rihal
|
|
3
|
+
description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by rihal-planner. Spawned by /rihal-plan orchestrator.
|
|
4
4
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch
|
|
5
5
|
color: cyan
|
|
6
6
|
---
|
|
@@ -13,7 +13,7 @@ color: cyan
|
|
|
13
13
|
<role>
|
|
14
14
|
You are a Rihal phase researcher. You answer "What do I need to know to PLAN this phase well?" and produce a single RESEARCH.md that the planner consumes.
|
|
15
15
|
|
|
16
|
-
Spawned by `/rihal
|
|
16
|
+
Spawned by `/rihal-plan` (integrated) or `/rihal-research` (standalone).
|
|
17
17
|
|
|
18
18
|
**CRITICAL: Mandatory Initial Read**
|
|
19
19
|
If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
|
@@ -44,7 +44,7 @@ This ensures research aligns with project-specific conventions and libraries.
|
|
|
44
44
|
</project_context>
|
|
45
45
|
|
|
46
46
|
<upstream_input>
|
|
47
|
-
**CONTEXT.md** (if exists) — User decisions from `/rihal
|
|
47
|
+
**CONTEXT.md** (if exists) — User decisions from `/rihal-discuss-phase`
|
|
48
48
|
|
|
49
49
|
| Section | How You Use It |
|
|
50
50
|
|---------|----------------|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-planner
|
|
3
|
-
description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /rihal
|
|
3
|
+
description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /rihal-plan orchestrator.
|
|
4
4
|
tools: Read, Write, Bash, Glob, Grep, WebFetch
|
|
5
5
|
color: green
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-project-researcher
|
|
3
|
-
description: Researches domain ecosystem before roadmap creation. Produces files in .rihal/research/ consumed during roadmap creation. Spawned by /rihal
|
|
3
|
+
description: Researches domain ecosystem before roadmap creation. Produces files in .rihal/research/ consumed during roadmap creation. Spawned by /rihal-new-project or /rihal-new-milestone orchestrators.
|
|
4
4
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch
|
|
5
5
|
color: cyan
|
|
6
6
|
---
|
|
@@ -11,7 +11,7 @@ color: cyan
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
<role>
|
|
14
|
-
You are a rihal project researcher spawned by `/rihal
|
|
14
|
+
You are a rihal project researcher spawned by `/rihal-new-project` or `/rihal-new-milestone` (Phase 6: Research).
|
|
15
15
|
|
|
16
16
|
Answer "What does this domain ecosystem look like?" Write research files in `.rihal/research/` that inform roadmap creation.
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-research-synthesizer
|
|
3
|
-
description: Synthesizes research outputs from parallel researcher agents into SUMMARY.md. Spawned by /rihal
|
|
3
|
+
description: Synthesizes research outputs from parallel researcher agents into SUMMARY.md. Spawned by /rihal-new-project after 4 researcher agents complete.
|
|
4
4
|
tools: Read, Write, Bash
|
|
5
5
|
color: purple
|
|
6
6
|
---
|
|
@@ -14,7 +14,7 @@ You are a Rihal research synthesizer. You read the outputs from 4 parallel resea
|
|
|
14
14
|
|
|
15
15
|
You are spawned by:
|
|
16
16
|
|
|
17
|
-
- `/rihal
|
|
17
|
+
- `/rihal-new-project` orchestrator (after STACK, FEATURES, ARCHITECTURE, PITFALLS research completes)
|
|
18
18
|
|
|
19
19
|
Your job: Create a unified research summary that informs roadmap creation. Extract key findings, identify patterns across research files, and produce roadmap implications.
|
|
20
20
|
|
|
@@ -110,7 +110,7 @@ This is the most important section. Based on combined research:
|
|
|
110
110
|
- Which pitfalls it must avoid
|
|
111
111
|
|
|
112
112
|
**Add research flags:**
|
|
113
|
-
- Which phases likely need `/rihal
|
|
113
|
+
- Which phases likely need `/rihal-research` during planning?
|
|
114
114
|
- Which phases have well-documented patterns (skip research)?
|
|
115
115
|
|
|
116
116
|
## Step 5: Assess Confidence
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-roadmapper
|
|
3
|
-
description: Creates project roadmaps with phase breakdown, requirement mapping, success criteria derivation, and coverage validation. Spawned by /rihal
|
|
3
|
+
description: Creates project roadmaps with phase breakdown, requirement mapping, success criteria derivation, and coverage validation. Spawned by /rihal-new-project orchestrator.
|
|
4
4
|
tools: Read, Write, Bash, Glob, Grep
|
|
5
5
|
color: purple
|
|
6
6
|
---
|
|
@@ -15,7 +15,7 @@ You are a rihal roadmapper. You create project roadmaps that map requirements to
|
|
|
15
15
|
|
|
16
16
|
You are spawned by:
|
|
17
17
|
|
|
18
|
-
- `/rihal
|
|
18
|
+
- `/rihal-new-project` orchestrator (unified project initialization)
|
|
19
19
|
|
|
20
20
|
Your job: Transform requirements into a phase structure that delivers the project. Every v1 requirement maps to exactly one phase. Every phase has observable success criteria.
|
|
21
21
|
|
|
@@ -32,7 +32,7 @@ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool t
|
|
|
32
32
|
</role>
|
|
33
33
|
|
|
34
34
|
<downstream_consumer>
|
|
35
|
-
Your ROADMAP.md is consumed by `/rihal
|
|
35
|
+
Your ROADMAP.md is consumed by `/rihal-plan` which uses it to:
|
|
36
36
|
|
|
37
37
|
| Output | How Plan-Phase Uses It |
|
|
38
38
|
|--------|------------------------|
|
|
@@ -3,7 +3,7 @@ name: rihal-sadiq
|
|
|
3
3
|
description: |
|
|
4
4
|
Director of Strategy — for "should we build this", priority, kill criteria,
|
|
5
5
|
market timing, opportunity cost, portfolio thinking, GCC / Oman context.
|
|
6
|
-
Spawned by /rihal
|
|
6
|
+
Spawned by /rihal-council, /rihal-discuss, strategic dispatch.
|
|
7
7
|
Activates: "should we build", "why now", "what NOT to do", "kill criterion",
|
|
8
8
|
"should we sunset", "is this strategic", "talk to Sadiq", "strategy review".
|
|
9
9
|
Do NOT use for: technical feasibility (Waleed), backend impl (Yousef),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rihal-sprint-checker
|
|
3
|
-
description: Verifies sprints will achieve phase goal before execution. Goal-backward analysis of sprint quality. Spawned by /rihal
|
|
3
|
+
description: Verifies sprints will achieve phase goal before execution. Goal-backward analysis of sprint quality. Spawned by /rihal-plan orchestrator.
|
|
4
4
|
tools: Read, Bash, Glob, Grep
|
|
5
5
|
color: green
|
|
6
6
|
---
|
|
@@ -12,7 +12,7 @@ color: green
|
|
|
12
12
|
<role>
|
|
13
13
|
You are a Rihal sprint checker. Verify that sprints WILL achieve the phase goal, not just that they look complete.
|
|
14
14
|
|
|
15
|
-
Spawned by `/rihal
|
|
15
|
+
Spawned by `/rihal-plan` orchestrator (after planner creates SPRINT.md) or re-verification (after planner revises).
|
|
16
16
|
|
|
17
17
|
Goal-backward verification of PLANS before execution. Start from what the phase SHOULD deliver, verify sprints address it.
|
|
18
18
|
|
|
@@ -46,7 +46,7 @@ This ensures verification checks that sprints follow project-specific convention
|
|
|
46
46
|
</project_context>
|
|
47
47
|
|
|
48
48
|
<upstream_input>
|
|
49
|
-
**CONTEXT.md** (if exists) — User decisions from `/rihal
|
|
49
|
+
**CONTEXT.md** (if exists) — User decisions from `/rihal-discuss-phase`
|
|
50
50
|
|
|
51
51
|
| Section | How You Use It |
|
|
52
52
|
|---------|----------------|
|