@hanzlaa/rcode 2.1.0

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.
Files changed (676) hide show
  1. package/AGENTS.md +120 -0
  2. package/CLAUDE.md +120 -0
  3. package/CONTRIBUTING.md +298 -0
  4. package/README.md +436 -0
  5. package/cli/config.js +142 -0
  6. package/cli/context.js +213 -0
  7. package/cli/dashboard.js +38 -0
  8. package/cli/digest.js +66 -0
  9. package/cli/doctor.js +283 -0
  10. package/cli/github-sync.js +1016 -0
  11. package/cli/index.js +113 -0
  12. package/cli/install.js +946 -0
  13. package/cli/lib/config.cjs +334 -0
  14. package/cli/lib/fsutil.cjs +76 -0
  15. package/cli/lib/github.cjs +365 -0
  16. package/cli/lib/manifest.cjs +240 -0
  17. package/cli/lib/memory-bank.cjs +348 -0
  18. package/cli/lib/model-profiles.cjs +169 -0
  19. package/cli/lib/prompts.cjs +355 -0
  20. package/cli/postinstall.js +32 -0
  21. package/cli/set-mode.js +94 -0
  22. package/cli/set-profile.js +80 -0
  23. package/cli/show-model.js +82 -0
  24. package/cli/team.js +35 -0
  25. package/cli/tiers.js +49 -0
  26. package/cli/uninstall.js +600 -0
  27. package/cli/update.js +373 -0
  28. package/package.json +60 -0
  29. package/rihal/agents/rihal-advisor-researcher.md +116 -0
  30. package/rihal/agents/rihal-ahmed.md +66 -0
  31. package/rihal/agents/rihal-architect.md +79 -0
  32. package/rihal/agents/rihal-assumptions-analyzer.md +117 -0
  33. package/rihal/agents/rihal-code-fixer.md +74 -0
  34. package/rihal/agents/rihal-code-reviewer.md +75 -0
  35. package/rihal/agents/rihal-codebase-mapper.md +170 -0
  36. package/rihal/agents/rihal-debugger.md +140 -0
  37. package/rihal/agents/rihal-deviation-analyzer.md +74 -0
  38. package/rihal/agents/rihal-docs-auditor.md +77 -0
  39. package/rihal/agents/rihal-edge-case-hunter.md +75 -0
  40. package/rihal/agents/rihal-executor.md +113 -0
  41. package/rihal/agents/rihal-fatima.md +68 -0
  42. package/rihal/agents/rihal-haitham.md +75 -0
  43. package/rihal/agents/rihal-hanzla.md +59 -0
  44. package/rihal/agents/rihal-hussain-pm.md +82 -0
  45. package/rihal/agents/rihal-integration-checker.md +455 -0
  46. package/rihal/agents/rihal-khalid.md +59 -0
  47. package/rihal/agents/rihal-layla.md +57 -0
  48. package/rihal/agents/rihal-mariam.md +58 -0
  49. package/rihal/agents/rihal-nasser.md +57 -0
  50. package/rihal/agents/rihal-noor.md +60 -0
  51. package/rihal/agents/rihal-nyquist-auditor.md +182 -0
  52. package/rihal/agents/rihal-omar.md +57 -0
  53. package/rihal/agents/rihal-phase-researcher.md +84 -0
  54. package/rihal/agents/rihal-planner.md +176 -0
  55. package/rihal/agents/rihal-profiler.md +74 -0
  56. package/rihal/agents/rihal-project-researcher.md +80 -0
  57. package/rihal/agents/rihal-remediation-planner.md +78 -0
  58. package/rihal/agents/rihal-research-synthesizer.md +253 -0
  59. package/rihal/agents/rihal-roadmapper.md +73 -0
  60. package/rihal/agents/rihal-sadiq.md +72 -0
  61. package/rihal/agents/rihal-security-adversary.md +82 -0
  62. package/rihal/agents/rihal-security-auditor.md +78 -0
  63. package/rihal/agents/rihal-sprint-checker.md +124 -0
  64. package/rihal/agents/rihal-tech-writer.md +80 -0
  65. package/rihal/agents/rihal-ui-auditor.md +81 -0
  66. package/rihal/agents/rihal-ui-designer.md +6 -0
  67. package/rihal/agents/rihal-ux-designer.md +83 -0
  68. package/rihal/agents/rihal-verifier.md +124 -0
  69. package/rihal/agents/rihal-waleed.md +60 -0
  70. package/rihal/agents/rihal-yousef.md +78 -0
  71. package/rihal/agents/rihal-zahra.md +62 -0
  72. package/rihal/agents/rihal-zayd.md +78 -0
  73. package/rihal/agents/rules/codebase-mapper/detailed-guide.md +615 -0
  74. package/rihal/agents/rules/debugger/checkpoint-recovery.md +272 -0
  75. package/rihal/agents/rules/debugger/debug-session-state.md +261 -0
  76. package/rihal/agents/rules/debugger/hypothesis-templates.md +330 -0
  77. package/rihal/agents/rules/debugger/investigation-protocol.md +298 -0
  78. package/rihal/agents/rules/debugger/scientific-method.md +317 -0
  79. package/rihal/agents/rules/executor/authentication-gates.md +202 -0
  80. package/rihal/agents/rules/executor/deviation-rules.md +191 -0
  81. package/rihal/agents/rules/executor/execution-flow.md +116 -0
  82. package/rihal/agents/rules/executor/self-check.md +241 -0
  83. package/rihal/agents/rules/executor/stub-detection.md +267 -0
  84. package/rihal/agents/rules/executor/summary-creation.md +76 -0
  85. package/rihal/agents/rules/executor/task-commit-protocol.md +283 -0
  86. package/rihal/agents/rules/executor/tdd-flow.md +294 -0
  87. package/rihal/agents/rules/phase-researcher/detailed-guide.md +628 -0
  88. package/rihal/agents/rules/planner/common-patterns.md +373 -0
  89. package/rihal/agents/rules/planner/dependency-analysis.md +195 -0
  90. package/rihal/agents/rules/planner/goal-backward-thinking.md +220 -0
  91. package/rihal/agents/rules/planner/sprint-verification.md +202 -0
  92. package/rihal/agents/rules/planner/task-templates.md +296 -0
  93. package/rihal/agents/rules/project-researcher/detailed-guide.md +589 -0
  94. package/rihal/agents/rules/roadmapper/detailed-guide.md +620 -0
  95. package/rihal/agents/rules/sprint-checker/dimensions.md +414 -0
  96. package/rihal/agents/rules/sprint-checker/process.md +377 -0
  97. package/rihal/agents/rules/verifier/anti-patterns.md +94 -0
  98. package/rihal/agents/rules/verifier/artifact-verification.md +69 -0
  99. package/rihal/agents/rules/verifier/behavioral-spot-checks.md +49 -0
  100. package/rihal/agents/rules/verifier/context-loading.md +84 -0
  101. package/rihal/agents/rules/verifier/data-flow-trace.md +65 -0
  102. package/rihal/agents/rules/verifier/gap-output.md +51 -0
  103. package/rihal/agents/rules/verifier/key-links.md +56 -0
  104. package/rihal/agents/rules/verifier/requirements-coverage.md +28 -0
  105. package/rihal/agents/rules/verifier/verification-report.md +131 -0
  106. package/rihal/bin/lib/code-references.cjs +196 -0
  107. package/rihal/bin/lib/config.cjs +146 -0
  108. package/rihal/bin/lib/council-panel.cjs +501 -0
  109. package/rihal/bin/lib/roadmap.cjs +256 -0
  110. package/rihal/bin/lib/verify.cjs +118 -0
  111. package/rihal/bin/rihal-hooks.cjs +204 -0
  112. package/rihal/bin/rihal-tools.cjs +3554 -0
  113. package/rihal/brain/README.md +38 -0
  114. package/rihal/brain/best-practices/no-autonomous-bypass.md +37 -0
  115. package/rihal/brain/best-practices/research-citation-rule.md +39 -0
  116. package/rihal/brain/best-practices/state-sync-rule.md +43 -0
  117. package/rihal/brain/sources.yaml +59 -0
  118. package/rihal/commands/add-phase.md +18 -0
  119. package/rihal/commands/add-tests.md +18 -0
  120. package/rihal/commands/add-todo.md +8 -0
  121. package/rihal/commands/analyze-dependencies.md +11 -0
  122. package/rihal/commands/audit-fix.md +14 -0
  123. package/rihal/commands/audit-milestone.md +12 -0
  124. package/rihal/commands/audit-uat.md +18 -0
  125. package/rihal/commands/autonomous.md +19 -0
  126. package/rihal/commands/brainstorm.md +11 -0
  127. package/rihal/commands/chain.md +8 -0
  128. package/rihal/commands/check-implementation-readiness.md +8 -0
  129. package/rihal/commands/check-todos.md +18 -0
  130. package/rihal/commands/cleanup.md +18 -0
  131. package/rihal/commands/code-review-fix.md +14 -0
  132. package/rihal/commands/code-review.md +14 -0
  133. package/rihal/commands/complete-milestone.md +12 -0
  134. package/rihal/commands/config.md +8 -0
  135. package/rihal/commands/correct-course.md +8 -0
  136. package/rihal/commands/council.md +25 -0
  137. package/rihal/commands/create-epics-and-stories.md +8 -0
  138. package/rihal/commands/create-story.md +8 -0
  139. package/rihal/commands/dashboard.md +10 -0
  140. package/rihal/commands/debug.md +8 -0
  141. package/rihal/commands/decisions.md +10 -0
  142. package/rihal/commands/dev-story.md +8 -0
  143. package/rihal/commands/diff.md +10 -0
  144. package/rihal/commands/discuss-phase-power.md +11 -0
  145. package/rihal/commands/discuss-phase.md +19 -0
  146. package/rihal/commands/discuss.md +23 -0
  147. package/rihal/commands/do.md +22 -0
  148. package/rihal/commands/docs-update.md +14 -0
  149. package/rihal/commands/document-project.md +8 -0
  150. package/rihal/commands/enable-hooks.md +11 -0
  151. package/rihal/commands/execute-sprint.md +13 -0
  152. package/rihal/commands/execute.md +19 -0
  153. package/rihal/commands/explore.md +14 -0
  154. package/rihal/commands/export-to-github.md +11 -0
  155. package/rihal/commands/forensics.md +11 -0
  156. package/rihal/commands/from-template.md +11 -0
  157. package/rihal/commands/health.md +10 -0
  158. package/rihal/commands/help.md +8 -0
  159. package/rihal/commands/import.md +12 -0
  160. package/rihal/commands/inbox.md +12 -0
  161. package/rihal/commands/init.md +14 -0
  162. package/rihal/commands/insert-phase.md +11 -0
  163. package/rihal/commands/install.md +10 -0
  164. package/rihal/commands/karpathy-audit.md +12 -0
  165. package/rihal/commands/list-plans.md +11 -0
  166. package/rihal/commands/list-workspaces.md +10 -0
  167. package/rihal/commands/map-codebase.md +14 -0
  168. package/rihal/commands/milestone-summary.md +11 -0
  169. package/rihal/commands/new-milestone.md +12 -0
  170. package/rihal/commands/new-project-research.md +11 -0
  171. package/rihal/commands/new-project-roadmap.md +11 -0
  172. package/rihal/commands/new-project.md +13 -0
  173. package/rihal/commands/new-workspace.md +12 -0
  174. package/rihal/commands/next.md +19 -0
  175. package/rihal/commands/note.md +12 -0
  176. package/rihal/commands/notify-test.md +10 -0
  177. package/rihal/commands/pause-work.md +8 -0
  178. package/rihal/commands/plan-milestone-gaps.md +18 -0
  179. package/rihal/commands/plan.md +19 -0
  180. package/rihal/commands/plant-seed.md +18 -0
  181. package/rihal/commands/pr-branch.md +18 -0
  182. package/rihal/commands/profile-user.md +8 -0
  183. package/rihal/commands/progress.md +19 -0
  184. package/rihal/commands/quick.md +14 -0
  185. package/rihal/commands/remove-phase.md +18 -0
  186. package/rihal/commands/remove-workspace.md +11 -0
  187. package/rihal/commands/replay.md +11 -0
  188. package/rihal/commands/report.md +10 -0
  189. package/rihal/commands/rerun.md +11 -0
  190. package/rihal/commands/research-phase.md +18 -0
  191. package/rihal/commands/resume-work.md +8 -0
  192. package/rihal/commands/review-adversarial.md +8 -0
  193. package/rihal/commands/review-edge-case-hunter.md +8 -0
  194. package/rihal/commands/review.md +18 -0
  195. package/rihal/commands/scan.md +14 -0
  196. package/rihal/commands/secure-phase.md +14 -0
  197. package/rihal/commands/session-report.md +10 -0
  198. package/rihal/commands/settings.md +8 -0
  199. package/rihal/commands/ship.md +18 -0
  200. package/rihal/commands/show.md +10 -0
  201. package/rihal/commands/sprint-planning.md +20 -0
  202. package/rihal/commands/sprint-status.md +21 -0
  203. package/rihal/commands/stats.md +10 -0
  204. package/rihal/commands/status.md +21 -0
  205. package/rihal/commands/ui-phase.md +8 -0
  206. package/rihal/commands/ui-review.md +8 -0
  207. package/rihal/commands/undo.md +14 -0
  208. package/rihal/commands/update.md +11 -0
  209. package/rihal/commands/validate-phase.md +18 -0
  210. package/rihal/commands/verify-phase.md +18 -0
  211. package/rihal/commands/verify-work.md +19 -0
  212. package/rihal/commands/why.md +10 -0
  213. package/rihal/commands/workstream.md +11 -0
  214. package/rihal/config/model-profiles.json +226 -0
  215. package/rihal/config/model-profiles.schema.json +36 -0
  216. package/rihal/config.yaml +39 -0
  217. package/rihal/digests/README.md +50 -0
  218. package/rihal/digests/fatima.md +24 -0
  219. package/rihal/digests/hussain-pm.md +24 -0
  220. package/rihal/digests/mariam.md +24 -0
  221. package/rihal/digests/sadiq.md +24 -0
  222. package/rihal/digests/waleed.md +24 -0
  223. package/rihal/modules/core.yaml +101 -0
  224. package/rihal/modules/discovery.yaml +50 -0
  225. package/rihal/modules/execution.yaml +66 -0
  226. package/rihal/references/brain-methods.csv +9 -0
  227. package/rihal/references/checklist-architect.md +146 -0
  228. package/rihal/references/checklist-change.md +136 -0
  229. package/rihal/references/checklist-pm.md +154 -0
  230. package/rihal/references/checklist-po-master.md +100 -0
  231. package/rihal/references/checklist-story-dod.md +75 -0
  232. package/rihal/references/checklist-story-draft.md +53 -0
  233. package/rihal/references/checkpoints-index.md +53 -0
  234. package/rihal/references/checkpoints.md +778 -0
  235. package/rihal/references/codebase-grounding.md +76 -0
  236. package/rihal/references/command-redirect-format.md +62 -0
  237. package/rihal/references/commit-conventions.md +125 -0
  238. package/rihal/references/common-bug-patterns-index.md +44 -0
  239. package/rihal/references/common-bug-patterns.md +621 -0
  240. package/rihal/references/context-budget.md +104 -0
  241. package/rihal/references/continuation-format.md +249 -0
  242. package/rihal/references/council-protocol.md +91 -0
  243. package/rihal/references/domain-probes.md +213 -0
  244. package/rihal/references/elicitation-methods.csv +16 -0
  245. package/rihal/references/execution-protocol.md +155 -0
  246. package/rihal/references/gate-prompts.md +212 -0
  247. package/rihal/references/gates.md +127 -0
  248. package/rihal/references/git-integration.md +159 -0
  249. package/rihal/references/git-planning-commit.md +185 -0
  250. package/rihal/references/karpathy-guidelines.md +79 -0
  251. package/rihal/references/model-profiles.md +90 -0
  252. package/rihal/references/no-unauthorized-git-ops.md +73 -0
  253. package/rihal/references/output-format.md +319 -0
  254. package/rihal/references/output-realism.md +52 -0
  255. package/rihal/references/project-types.yaml +270 -0
  256. package/rihal/references/questioning.md +163 -0
  257. package/rihal/references/response-style.md +81 -0
  258. package/rihal/references/state-schema.md +366 -0
  259. package/rihal/references/tdd.md +263 -0
  260. package/rihal/references/thinking-models-debug.md +126 -0
  261. package/rihal/references/thinking-models-planning.md +127 -0
  262. package/rihal/references/ui-brand.md +254 -0
  263. package/rihal/references/verification-patterns-index.md +76 -0
  264. package/rihal/references/verification-patterns.md +612 -0
  265. package/rihal/references/workstream-flag.md +166 -0
  266. package/rihal/skills/SKILLS_INDEX.md +114 -0
  267. package/rihal/skills/_shared/no-autonomous-bypass.md +37 -0
  268. package/rihal/skills/_shared/research-citation-rule.md +39 -0
  269. package/rihal/skills/_shared/state-sync-rule.md +43 -0
  270. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/SKILL.md +31 -0
  271. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-01-init.md +137 -0
  272. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
  273. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
  274. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
  275. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-05-technical-trends.md +234 -0
  276. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
  277. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/research.template.md +29 -0
  278. package/rihal/skills/actions/1-analysis/research/rihal-domain-research/workflow.md +49 -0
  279. package/rihal/skills/actions/1-analysis/research/rihal-market-research/SKILL.md +30 -0
  280. package/rihal/skills/actions/1-analysis/research/rihal-market-research/research.template.md +29 -0
  281. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-01-init.md +184 -0
  282. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-02-customer-behavior.md +239 -0
  283. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-03-customer-pain-points.md +251 -0
  284. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-04-customer-decisions.md +261 -0
  285. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-05-competitive-analysis.md +173 -0
  286. package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-06-research-completion.md +478 -0
  287. package/rihal/skills/actions/1-analysis/research/rihal-market-research/workflow.md +49 -0
  288. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/SKILL.md +31 -0
  289. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/research.template.md +29 -0
  290. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-01-init.md +137 -0
  291. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-02-technical-overview.md +239 -0
  292. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
  293. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
  294. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-05-implementation-research.md +233 -0
  295. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
  296. package/rihal/skills/actions/1-analysis/research/rihal-technical-research/workflow.md +50 -0
  297. package/rihal/skills/actions/1-analysis/rihal-document-project/SKILL.md +30 -0
  298. package/rihal/skills/actions/1-analysis/rihal-document-project/checklist.md +245 -0
  299. package/rihal/skills/actions/1-analysis/rihal-document-project/documentation-requirements.csv +12 -0
  300. package/rihal/skills/actions/1-analysis/rihal-document-project/instructions.md +128 -0
  301. package/rihal/skills/actions/1-analysis/rihal-document-project/templates/deep-dive-template.md +345 -0
  302. package/rihal/skills/actions/1-analysis/rihal-document-project/templates/index-template.md +169 -0
  303. package/rihal/skills/actions/1-analysis/rihal-document-project/templates/project-overview-template.md +103 -0
  304. package/rihal/skills/actions/1-analysis/rihal-document-project/templates/project-scan-report-schema.json +160 -0
  305. package/rihal/skills/actions/1-analysis/rihal-document-project/templates/source-tree-template.md +135 -0
  306. package/rihal/skills/actions/1-analysis/rihal-document-project/workflow.md +27 -0
  307. package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/deep-dive-instructions.md +299 -0
  308. package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/deep-dive-workflow.md +34 -0
  309. package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/full-scan-instructions.md +1107 -0
  310. package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/full-scan-workflow.md +34 -0
  311. package/rihal/skills/actions/1-analysis/rihal-prfaq/SKILL.md +120 -0
  312. package/rihal/skills/actions/1-analysis/rihal-prfaq/agents/artifact-analyzer.md +60 -0
  313. package/rihal/skills/actions/1-analysis/rihal-prfaq/agents/web-researcher.md +49 -0
  314. package/rihal/skills/actions/1-analysis/rihal-prfaq/assets/prfaq-template.md +62 -0
  315. package/rihal/skills/actions/1-analysis/rihal-prfaq/references/customer-faq.md +55 -0
  316. package/rihal/skills/actions/1-analysis/rihal-prfaq/references/internal-faq.md +51 -0
  317. package/rihal/skills/actions/1-analysis/rihal-prfaq/references/press-release.md +60 -0
  318. package/rihal/skills/actions/1-analysis/rihal-prfaq/references/verdict.md +79 -0
  319. package/rihal/skills/actions/1-analysis/rihal-prfaq/rihal-manifest.json +16 -0
  320. package/rihal/skills/actions/1-analysis/rihal-product-brief/SKILL.md +112 -0
  321. package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/artifact-analyzer.md +60 -0
  322. package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/opportunity-reviewer.md +44 -0
  323. package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/skeptic-reviewer.md +44 -0
  324. package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/web-researcher.md +49 -0
  325. package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/contextual-discovery.md +57 -0
  326. package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/draft-and-review.md +86 -0
  327. package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/finalize.md +75 -0
  328. package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/guided-elicitation.md +70 -0
  329. package/rihal/skills/actions/1-analysis/rihal-product-brief/resources/brief-template.md +60 -0
  330. package/rihal/skills/actions/1-analysis/rihal-product-brief/rihal-manifest.json +17 -0
  331. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/SKILL.md +30 -0
  332. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
  333. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
  334. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  335. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
  336. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/templates/epics-template.md +61 -0
  337. package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/workflow.md +54 -0
  338. package/rihal/skills/actions/2-plan/rihal-create-milestone/SKILL.md +39 -0
  339. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/README.md +30 -0
  340. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-01-init.md +62 -0
  341. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-02-outcomes.md +64 -0
  342. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-03-sequencing.md +65 -0
  343. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-04-windows.md +60 -0
  344. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-05-kill-criteria.md +59 -0
  345. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-06-phase-stubs.md +56 -0
  346. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-07-backlog.md +44 -0
  347. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-08-write-roadmap.md +58 -0
  348. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-09-state-sync.md +62 -0
  349. package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-10-complete.md +56 -0
  350. package/rihal/skills/actions/2-plan/rihal-create-milestone/workflow.md +93 -0
  351. package/rihal/skills/actions/2-plan/rihal-create-prd/SKILL.md +40 -0
  352. package/rihal/skills/actions/2-plan/rihal-create-prd/data/domain-complexity.csv +15 -0
  353. package/rihal/skills/actions/2-plan/rihal-create-prd/data/prd-purpose.md +197 -0
  354. package/rihal/skills/actions/2-plan/rihal-create-prd/data/project-types.csv +11 -0
  355. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-01-init.md +178 -0
  356. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-01b-continue.md +161 -0
  357. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02-discovery.md +208 -0
  358. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02b-vision.md +142 -0
  359. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02c-executive-summary.md +158 -0
  360. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-03-success.md +214 -0
  361. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-04-journeys.md +201 -0
  362. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-05-domain.md +194 -0
  363. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-06-innovation.md +211 -0
  364. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-07-project-type.md +222 -0
  365. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-08-scoping.md +216 -0
  366. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-09-functional.md +219 -0
  367. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-10-nonfunctional.md +230 -0
  368. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-11-polish.md +221 -0
  369. package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-12-complete.md +115 -0
  370. package/rihal/skills/actions/2-plan/rihal-create-prd/templates/prd-template.md +10 -0
  371. package/rihal/skills/actions/2-plan/rihal-create-prd/workflow.md +64 -0
  372. package/rihal/skills/actions/2-plan/rihal-create-story/SKILL.md +31 -0
  373. package/rihal/skills/actions/2-plan/rihal-create-story/checklist.md +357 -0
  374. package/rihal/skills/actions/2-plan/rihal-create-story/discover-inputs.md +88 -0
  375. package/rihal/skills/actions/2-plan/rihal-create-story/template.md +49 -0
  376. package/rihal/skills/actions/2-plan/rihal-create-story/workflow.md +380 -0
  377. package/rihal/skills/actions/2-plan/rihal-create-ux-design/SKILL.md +31 -0
  378. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-01-init.md +135 -0
  379. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-01b-continue.md +127 -0
  380. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-02-discovery.md +190 -0
  381. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-03-core-experience.md +217 -0
  382. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-04-emotional-response.md +220 -0
  383. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-05-inspiration.md +235 -0
  384. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-06-design-system.md +253 -0
  385. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-07-defining-experience.md +255 -0
  386. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-08-visual-foundation.md +225 -0
  387. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-09-design-directions.md +225 -0
  388. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-10-user-journeys.md +242 -0
  389. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-11-component-strategy.md +249 -0
  390. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-12-ux-patterns.md +238 -0
  391. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
  392. package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-14-complete.md +171 -0
  393. package/rihal/skills/actions/2-plan/rihal-create-ux-design/ux-design-template.md +13 -0
  394. package/rihal/skills/actions/2-plan/rihal-create-ux-design/workflow.md +36 -0
  395. package/rihal/skills/actions/2-plan/rihal-edit-prd/SKILL.md +30 -0
  396. package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-01-discovery.md +242 -0
  397. package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
  398. package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-02-review.md +245 -0
  399. package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-03-edit.md +250 -0
  400. package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-04-complete.md +165 -0
  401. package/rihal/skills/actions/2-plan/rihal-edit-prd/workflow.md +63 -0
  402. package/rihal/skills/actions/2-plan/rihal-frontend-design/SKILL.md +169 -0
  403. package/rihal/skills/actions/2-plan/rihal-validate-prd/SKILL.md +29 -0
  404. package/rihal/skills/actions/2-plan/rihal-validate-prd/data/domain-complexity.csv +15 -0
  405. package/rihal/skills/actions/2-plan/rihal-validate-prd/data/prd-purpose.md +197 -0
  406. package/rihal/skills/actions/2-plan/rihal-validate-prd/data/project-types.csv +11 -0
  407. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-01-discovery.md +221 -0
  408. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
  409. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
  410. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
  411. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
  412. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
  413. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
  414. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
  415. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
  416. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
  417. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
  418. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
  419. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
  420. package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
  421. package/rihal/skills/actions/2-plan/rihal-validate-prd/workflow.md +62 -0
  422. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/SKILL.md +30 -0
  423. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
  424. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
  425. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
  426. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
  427. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
  428. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
  429. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/templates/readiness-report-template.md +4 -0
  430. package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/workflow.md +49 -0
  431. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/SKILL.md +32 -0
  432. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/architecture-decision-template.md +12 -0
  433. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/data/domain-complexity.csv +13 -0
  434. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/data/project-types.csv +7 -0
  435. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-01-init.md +153 -0
  436. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-01b-continue.md +173 -0
  437. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-02-context.md +224 -0
  438. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-03-starter.md +329 -0
  439. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-04-decisions.md +318 -0
  440. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-05-patterns.md +359 -0
  441. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-06-structure.md +379 -0
  442. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-07-validation.md +359 -0
  443. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-08-complete.md +76 -0
  444. package/rihal/skills/actions/3-solutioning/rihal-create-architecture/workflow.md +38 -0
  445. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/SKILL.md +31 -0
  446. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/project-context-template.md +21 -0
  447. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-01-discover.md +186 -0
  448. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-02-generate.md +321 -0
  449. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-03-complete.md +278 -0
  450. package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/workflow.md +43 -0
  451. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/SKILL.md +48 -0
  452. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/generate-trail.md +38 -0
  453. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-01-orientation.md +105 -0
  454. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-02-walkthrough.md +89 -0
  455. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-03-detail-pass.md +106 -0
  456. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-04-testing.md +74 -0
  457. package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-05-wrapup.md +24 -0
  458. package/rihal/skills/actions/4-implementation/rihal-code-review/SKILL.md +31 -0
  459. package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-01-gather-context.md +62 -0
  460. package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-02-review.md +34 -0
  461. package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-03-triage.md +49 -0
  462. package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-04-present.md +129 -0
  463. package/rihal/skills/actions/4-implementation/rihal-code-review/workflow.md +55 -0
  464. package/rihal/skills/actions/4-implementation/rihal-correct-course/SKILL.md +29 -0
  465. package/rihal/skills/actions/4-implementation/rihal-correct-course/checklist.md +288 -0
  466. package/rihal/skills/actions/4-implementation/rihal-correct-course/workflow.md +267 -0
  467. package/rihal/skills/actions/4-implementation/rihal-dev-story/SKILL.md +36 -0
  468. package/rihal/skills/actions/4-implementation/rihal-dev-story/checklist.md +80 -0
  469. package/rihal/skills/actions/4-implementation/rihal-dev-story/workflow.md +450 -0
  470. package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/SKILL.md +31 -0
  471. package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/checklist.md +33 -0
  472. package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/workflow.md +136 -0
  473. package/rihal/skills/actions/4-implementation/rihal-retrospective/SKILL.md +30 -0
  474. package/rihal/skills/actions/4-implementation/rihal-retrospective/workflow.md +1479 -0
  475. package/rihal/skills/actions/4-implementation/rihal-scaffold-project/SKILL.md +77 -0
  476. package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-01-target.md +17 -0
  477. package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-02-safety.md +35 -0
  478. package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-03-clone.md +50 -0
  479. package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-04-post-setup.md +44 -0
  480. package/rihal/skills/actions/4-implementation/rihal-sprint-planning/SKILL.md +35 -0
  481. package/rihal/skills/actions/4-implementation/rihal-sprint-planning/checklist.md +43 -0
  482. package/rihal/skills/actions/4-implementation/rihal-sprint-planning/sprint-status-template.yaml +56 -0
  483. package/rihal/skills/actions/4-implementation/rihal-sprint-planning/workflow.md +284 -0
  484. package/rihal/skills/actions/4-implementation/rihal-sprint-status/SKILL.md +30 -0
  485. package/rihal/skills/actions/4-implementation/rihal-sprint-status/workflow.md +261 -0
  486. package/rihal/skills/agents/ahmed-hassani-director/SKILL.md +121 -0
  487. package/rihal/skills/agents/fatima-qa/SKILL.md +106 -0
  488. package/rihal/skills/agents/fatima-qa/skill-manifest.yaml +11 -0
  489. package/rihal/skills/agents/haitham-frontend/SKILL.md +120 -0
  490. package/rihal/skills/agents/hanzla-engineer/SKILL.md +109 -0
  491. package/rihal/skills/agents/hanzla-engineer/skill-manifest.yaml +11 -0
  492. package/rihal/skills/agents/hussain-pm/SKILL.md +107 -0
  493. package/rihal/skills/agents/hussain-pm/skill-manifest.yaml +11 -0
  494. package/rihal/skills/agents/hussain-sm/SKILL.md +104 -0
  495. package/rihal/skills/agents/hussain-sm/skill-manifest.yaml +11 -0
  496. package/rihal/skills/agents/layla-designer/SKILL.md +96 -0
  497. package/rihal/skills/agents/layla-designer/skill-manifest.yaml +11 -0
  498. package/rihal/skills/agents/majlis-council/SKILL.md +179 -0
  499. package/rihal/skills/agents/mariam-marketing/SKILL.md +133 -0
  500. package/rihal/skills/agents/nasser-eng-manager/SKILL.md +125 -0
  501. package/rihal/skills/agents/noor-writer/SKILL.md +104 -0
  502. package/rihal/skills/agents/noor-writer/explain-concept.md +20 -0
  503. package/rihal/skills/agents/noor-writer/mermaid-gen.md +20 -0
  504. package/rihal/skills/agents/noor-writer/skill-manifest.yaml +11 -0
  505. package/rihal/skills/agents/noor-writer/validate-doc.md +19 -0
  506. package/rihal/skills/agents/noor-writer/write-document.md +20 -0
  507. package/rihal/skills/agents/raees-orchestrator/SKILL.md +154 -0
  508. package/rihal/skills/agents/sadiq-analyst/SKILL.md +106 -0
  509. package/rihal/skills/agents/sadiq-analyst/skill-manifest.yaml +11 -0
  510. package/rihal/skills/agents/waleed-architect/SKILL.md +106 -0
  511. package/rihal/skills/agents/waleed-architect/skill-manifest.yaml +11 -0
  512. package/rihal/skills/agents/yousef-backend/SKILL.md +136 -0
  513. package/rihal/skills/agents/zahra-branding/SKILL.md +141 -0
  514. package/rihal/skills/agents/zayd-ml/SKILL.md +124 -0
  515. package/rihal/skills/core/module-help.csv +11 -0
  516. package/rihal/skills/core/module.yaml +25 -0
  517. package/rihal/skills/core/rihal-advanced-elicitation/SKILL.md +155 -0
  518. package/rihal/skills/core/rihal-advanced-elicitation/methods.csv +51 -0
  519. package/rihal/skills/core/rihal-advanced-elicitation/rihal-advanced-elicitation/SKILL.md +148 -0
  520. package/rihal/skills/core/rihal-advanced-elicitation/rihal-advanced-elicitation/methods.csv +51 -0
  521. package/rihal/skills/core/rihal-brainstorming/SKILL.md +82 -0
  522. package/rihal/skills/core/rihal-brainstorming/brain-methods.csv +62 -0
  523. package/rihal/skills/core/rihal-brainstorming/steps/step-01-session-setup.md +214 -0
  524. package/rihal/skills/core/rihal-brainstorming/steps/step-01b-continue.md +124 -0
  525. package/rihal/skills/core/rihal-brainstorming/steps/step-02a-user-selected.md +229 -0
  526. package/rihal/skills/core/rihal-brainstorming/steps/step-02b-ai-recommended.md +239 -0
  527. package/rihal/skills/core/rihal-brainstorming/steps/step-02c-random-selection.md +211 -0
  528. package/rihal/skills/core/rihal-brainstorming/steps/step-02d-progressive-flow.md +266 -0
  529. package/rihal/skills/core/rihal-brainstorming/steps/step-03-technique-execution.md +401 -0
  530. package/rihal/skills/core/rihal-brainstorming/steps/step-04-idea-organization.md +305 -0
  531. package/rihal/skills/core/rihal-brainstorming/template.md +15 -0
  532. package/rihal/skills/core/rihal-brainstorming/workflow.md +53 -0
  533. package/rihal/skills/core/rihal-clone-website/SKILL.md +395 -0
  534. package/rihal/skills/core/rihal-distillator/SKILL.md +205 -0
  535. package/rihal/skills/core/rihal-distillator/agents/distillate-compressor.md +116 -0
  536. package/rihal/skills/core/rihal-distillator/agents/round-trip-reconstructor.md +68 -0
  537. package/rihal/skills/core/rihal-distillator/resources/compression-rules.md +51 -0
  538. package/rihal/skills/core/rihal-distillator/resources/distillate-format-reference.md +227 -0
  539. package/rihal/skills/core/rihal-distillator/resources/splitting-strategy.md +78 -0
  540. package/rihal/skills/core/rihal-distillator/scripts/analyze_sources.py +300 -0
  541. package/rihal/skills/core/rihal-distillator/scripts/tests/test_analyze_sources.py +204 -0
  542. package/rihal/skills/core/rihal-editorial-review-prose/SKILL.md +108 -0
  543. package/rihal/skills/core/rihal-editorial-review-structure/SKILL.md +193 -0
  544. package/rihal/skills/core/rihal-help/SKILL.md +91 -0
  545. package/rihal/skills/core/rihal-index-docs/SKILL.md +80 -0
  546. package/rihal/skills/core/rihal-init/SKILL.md +119 -0
  547. package/rihal/skills/core/rihal-init/resources/core-module.yaml +25 -0
  548. package/rihal/skills/core/rihal-init/scripts/rihal_init.py +593 -0
  549. package/rihal/skills/core/rihal-init/scripts/tests/test_rihal_init.py +329 -0
  550. package/rihal/skills/core/rihal-party-mode/SKILL.md +77 -0
  551. package/rihal/skills/core/rihal-party-mode/steps/step-01-agent-loading.md +138 -0
  552. package/rihal/skills/core/rihal-party-mode/steps/step-02-discussion-orchestration.md +187 -0
  553. package/rihal/skills/core/rihal-party-mode/steps/step-03-graceful-exit.md +167 -0
  554. package/rihal/skills/core/rihal-party-mode/workflow.md +190 -0
  555. package/rihal/skills/core/rihal-review-adversarial-general/SKILL.md +55 -0
  556. package/rihal/skills/core/rihal-review-edge-case-hunter/SKILL.md +81 -0
  557. package/rihal/skills/core/rihal-shard-doc/SKILL.md +119 -0
  558. package/rihal/skills/core/rihal-shard-doc/rihal-shard-doc/SKILL.md +122 -0
  559. package/rihal/team.yaml +343 -0
  560. package/rihal/templates/UI-SPEC.md +127 -0
  561. package/rihal/templates/documentation-requirements.csv +11 -0
  562. package/rihal/templates/github/bug-template.md +53 -0
  563. package/rihal/templates/github/epic-template.md +57 -0
  564. package/rihal/templates/github/feature-template.md +55 -0
  565. package/rihal/templates/github/task-template.md +52 -0
  566. package/rihal/templates/milestone.md +147 -0
  567. package/rihal/templates/projects/api-backend/PROJECT.md +37 -0
  568. package/rihal/templates/projects/api-backend/REQUIREMENTS.md +38 -0
  569. package/rihal/templates/projects/api-backend/ROADMAP.md +92 -0
  570. package/rihal/templates/projects/api-backend/template.yaml +17 -0
  571. package/rihal/templates/projects/mobile-app/PROJECT.md +37 -0
  572. package/rihal/templates/projects/mobile-app/REQUIREMENTS.md +32 -0
  573. package/rihal/templates/projects/mobile-app/ROADMAP.md +93 -0
  574. package/rihal/templates/projects/mobile-app/template.yaml +17 -0
  575. package/rihal/templates/projects/saas-b2b/PROJECT.md +40 -0
  576. package/rihal/templates/projects/saas-b2b/REQUIREMENTS.md +38 -0
  577. package/rihal/templates/projects/saas-b2b/ROADMAP.md +95 -0
  578. package/rihal/templates/projects/saas-b2b/template.yaml +18 -0
  579. package/rihal/templates/settings-hooks.json +36 -0
  580. package/rihal/templates/sprint.md +70 -0
  581. package/rihal/workflows/add-phase.md +112 -0
  582. package/rihal/workflows/add-tests.md +351 -0
  583. package/rihal/workflows/add-todo.md +181 -0
  584. package/rihal/workflows/analyze-dependencies.md +138 -0
  585. package/rihal/workflows/audit-fix.md +190 -0
  586. package/rihal/workflows/audit-milestone.md +155 -0
  587. package/rihal/workflows/audit-uat.md +109 -0
  588. package/rihal/workflows/autonomous.md +992 -0
  589. package/rihal/workflows/brainstorm.md +203 -0
  590. package/rihal/workflows/chain.md +188 -0
  591. package/rihal/workflows/check-implementation-readiness.md +193 -0
  592. package/rihal/workflows/check-todos.md +177 -0
  593. package/rihal/workflows/cleanup.md +152 -0
  594. package/rihal/workflows/code-review-fix.md +529 -0
  595. package/rihal/workflows/code-review.md +566 -0
  596. package/rihal/workflows/complete-milestone.md +836 -0
  597. package/rihal/workflows/config.md +105 -0
  598. package/rihal/workflows/correct-course.md +190 -0
  599. package/rihal/workflows/council.md +565 -0
  600. package/rihal/workflows/create-epics-and-stories.md +373 -0
  601. package/rihal/workflows/create-story.md +297 -0
  602. package/rihal/workflows/dashboard.md +102 -0
  603. package/rihal/workflows/debug.md +256 -0
  604. package/rihal/workflows/decisions.md +107 -0
  605. package/rihal/workflows/dev-story.md +432 -0
  606. package/rihal/workflows/diff.md +74 -0
  607. package/rihal/workflows/discuss-phase-power.md +325 -0
  608. package/rihal/workflows/discuss-phase.md +1201 -0
  609. package/rihal/workflows/discuss.md +227 -0
  610. package/rihal/workflows/do.md +175 -0
  611. package/rihal/workflows/docs-update.md +261 -0
  612. package/rihal/workflows/document-project.md +180 -0
  613. package/rihal/workflows/enable-hooks.md +102 -0
  614. package/rihal/workflows/execute-sprint.md +514 -0
  615. package/rihal/workflows/execute.md +1478 -0
  616. package/rihal/workflows/explore.md +171 -0
  617. package/rihal/workflows/export-to-github.md +174 -0
  618. package/rihal/workflows/forensics.md +201 -0
  619. package/rihal/workflows/from-template.md +173 -0
  620. package/rihal/workflows/health.md +194 -0
  621. package/rihal/workflows/help.md +318 -0
  622. package/rihal/workflows/import.md +306 -0
  623. package/rihal/workflows/inbox.md +418 -0
  624. package/rihal/workflows/init.md +245 -0
  625. package/rihal/workflows/insert-phase.md +116 -0
  626. package/rihal/workflows/install.md +85 -0
  627. package/rihal/workflows/karpathy-audit.md +409 -0
  628. package/rihal/workflows/list-plans.md +146 -0
  629. package/rihal/workflows/list-workspaces.md +115 -0
  630. package/rihal/workflows/map-codebase.md +449 -0
  631. package/rihal/workflows/milestone-summary.md +206 -0
  632. package/rihal/workflows/new-milestone.md +616 -0
  633. package/rihal/workflows/new-project-research.md +262 -0
  634. package/rihal/workflows/new-project-roadmap.md +446 -0
  635. package/rihal/workflows/new-project.md +1503 -0
  636. package/rihal/workflows/new-workspace.md +167 -0
  637. package/rihal/workflows/next.md +162 -0
  638. package/rihal/workflows/note.md +156 -0
  639. package/rihal/workflows/notify-test.md +113 -0
  640. package/rihal/workflows/pause-work.md +243 -0
  641. package/rihal/workflows/plan-milestone-gaps.md +273 -0
  642. package/rihal/workflows/plan.md +1262 -0
  643. package/rihal/workflows/plant-seed.md +169 -0
  644. package/rihal/workflows/pr-branch.md +129 -0
  645. package/rihal/workflows/profile-user.md +162 -0
  646. package/rihal/workflows/progress.md +184 -0
  647. package/rihal/workflows/quick.md +105 -0
  648. package/rihal/workflows/remove-phase.md +155 -0
  649. package/rihal/workflows/remove-workspace.md +158 -0
  650. package/rihal/workflows/replay.md +160 -0
  651. package/rihal/workflows/rerun.md +77 -0
  652. package/rihal/workflows/research-phase.md +82 -0
  653. package/rihal/workflows/resume-work.md +326 -0
  654. package/rihal/workflows/review-adversarial.md +180 -0
  655. package/rihal/workflows/review-edge-case-hunter.md +214 -0
  656. package/rihal/workflows/review.md +281 -0
  657. package/rihal/workflows/scan.md +135 -0
  658. package/rihal/workflows/secure-phase.md +196 -0
  659. package/rihal/workflows/session-report.md +187 -0
  660. package/rihal/workflows/settings.md +185 -0
  661. package/rihal/workflows/ship.md +237 -0
  662. package/rihal/workflows/show.md +63 -0
  663. package/rihal/workflows/sprint-planning.md +166 -0
  664. package/rihal/workflows/sprint-status.md +124 -0
  665. package/rihal/workflows/stats.md +141 -0
  666. package/rihal/workflows/status.md +116 -0
  667. package/rihal/workflows/ui-phase.md +148 -0
  668. package/rihal/workflows/ui-review.md +130 -0
  669. package/rihal/workflows/undo.md +426 -0
  670. package/rihal/workflows/update.md +185 -0
  671. package/rihal/workflows/validate-phase.md +174 -0
  672. package/rihal/workflows/verify-phase.md +375 -0
  673. package/rihal/workflows/verify-work.md +717 -0
  674. package/rihal/workflows/why.md +130 -0
  675. package/rihal/workflows/workstream.md +197 -0
  676. package/server/dashboard.js +632 -0
@@ -0,0 +1,355 @@
1
+ /**
2
+ * Zero-dep interactive prompt helpers for the Rihal Code CLI.
3
+ *
4
+ * Why this exists:
5
+ * Hand-rolled readline.question() crashes or silently aborts when a user
6
+ * types an unexpected value (e.g. "a" instead of "1"). (prior tooling used)
7
+ * @clack/prompts; we stay zero-dep by implementing a small, well-tested
8
+ * helper with validation loops, friendly errors, and clean SIGINT/EOF
9
+ * handling.
10
+ *
11
+ * Public API:
12
+ * askChoice(question, { choices, default, allowMulti, expand, maxAttempts })
13
+ * → Promise<string[]> (resolved ids)
14
+ * askConfirm(question, { default, maxAttempts })
15
+ * → Promise<boolean>
16
+ * askText(question, { default, validate, maxAttempts })
17
+ * → Promise<string>
18
+ * PromptAbortError — thrown on EOF / max-attempts / explicit abort
19
+ *
20
+ * All helpers:
21
+ * - Create and close their own readline.Interface (no leaks).
22
+ * - Install a one-shot SIGINT handler on first use that prints "Cancelled."
23
+ * and exits 0 (no stack trace).
24
+ * - Re-prompt on invalid input up to maxAttempts (default 3) rounds.
25
+ * - Accept empty input as "use default" when a default is provided.
26
+ */
27
+
28
+ const readline = require('readline');
29
+
30
+ class PromptAbortError extends Error {
31
+ constructor(message = 'Prompt aborted') {
32
+ super(message);
33
+ this.name = 'PromptAbortError';
34
+ }
35
+ }
36
+
37
+ // Install SIGINT handler once — repeated requires don't stack handlers.
38
+ let sigintInstalled = false;
39
+ function installSigintHandler() {
40
+ if (sigintInstalled) return;
41
+ sigintInstalled = true;
42
+ process.on('SIGINT', () => {
43
+ // Newline so the "Cancelled." line doesn't append to the half-typed prompt.
44
+ process.stdout.write('\n\nCancelled.\n');
45
+ process.exit(0);
46
+ });
47
+ }
48
+
49
+ /**
50
+ * Process-wide shared readline session.
51
+ *
52
+ * Why singleton: opening and closing a fresh readline.Interface for each
53
+ * prompt loses buffered pipe input between prompts — the second session
54
+ * sees stdin as already closed (EOF). So we keep exactly one session for
55
+ * the whole process lifetime. It's cheap (one interface) and it exits
56
+ * naturally when the process exits.
57
+ *
58
+ * Why line-event queue instead of rl.question(): node's rl.question() has
59
+ * a known quirk where the second call on piped input hangs even with
60
+ * more lines buffered. A line queue + pending-resolver pattern avoids it.
61
+ */
62
+ let sharedSession = null;
63
+ function getSession() {
64
+ if (sharedSession) return sharedSession;
65
+ sharedSession = openSession();
66
+ return sharedSession;
67
+ }
68
+
69
+ function openSession() {
70
+ installSigintHandler();
71
+ const isTTY = !!process.stdin.isTTY;
72
+
73
+ const rl = readline.createInterface({
74
+ input: process.stdin,
75
+ output: process.stdout,
76
+ terminal: isTTY,
77
+ });
78
+
79
+ let closedByUs = false;
80
+ let streamClosed = false;
81
+
82
+ rl.on('close', () => {
83
+ streamClosed = true;
84
+ });
85
+
86
+ // Two code paths:
87
+ //
88
+ // 1. TTY mode — hand the whole ask off to rl.question(). Readline
89
+ // owns printing the prompt, tracking cursor position, handling
90
+ // backspace / arrow keys / history. If we printed the prompt
91
+ // ourselves, readline's internal cursor tracking walks past the
92
+ // prompt on backspace and erases it — that was the bug in #16.
93
+ //
94
+ // 2. Piped mode (CI, test harness, rihal-code install | tee ...) —
95
+ // rl.question() has a quirk where the second call in a sequence
96
+ // can miss the next buffered line. The line-event queue pattern
97
+ // below avoids it: we listen for `line` events ourselves and
98
+ // match them to pending waiters.
99
+ //
100
+ // Both paths share the same closed-stream handling and abort semantics.
101
+
102
+ const lineQueue = [];
103
+ const waiters = [];
104
+
105
+ if (!isTTY) {
106
+ rl.on('line', (line) => {
107
+ if (waiters.length > 0) {
108
+ const { resolve } = waiters.shift();
109
+ resolve(line);
110
+ } else {
111
+ lineQueue.push(line);
112
+ }
113
+ });
114
+ rl.on('close', () => {
115
+ // Reject every pending waiter so askers don't hang forever.
116
+ while (waiters.length > 0) {
117
+ const { reject } = waiters.shift();
118
+ if (!closedByUs) {
119
+ reject(new PromptAbortError('Input stream closed'));
120
+ }
121
+ }
122
+ });
123
+ }
124
+
125
+ function ask(question) {
126
+ if (isTTY) {
127
+ if (streamClosed) {
128
+ return Promise.reject(new PromptAbortError('Input stream closed'));
129
+ }
130
+ // Readline handles the whole prompt lifecycle: print, cursor,
131
+ // backspace, submit. No manual process.stdout.write here — that
132
+ // was the source of the backspace-erases-prompt bug (#16).
133
+ return new Promise((resolve, reject) => {
134
+ // readline docs: on close while a question is pending, resolve
135
+ // is invoked with undefined. We treat that as abort.
136
+ let settled = false;
137
+ const onClose = () => {
138
+ if (!settled && !closedByUs) {
139
+ settled = true;
140
+ reject(new PromptAbortError('Input stream closed'));
141
+ }
142
+ };
143
+ rl.once('close', onClose);
144
+ rl.question(question, (answer) => {
145
+ if (settled) return;
146
+ settled = true;
147
+ rl.removeListener('close', onClose);
148
+ resolve((answer || '').trim());
149
+ });
150
+ });
151
+ }
152
+
153
+ // Piped path — print prompt manually, drain queue before giving up.
154
+ process.stdout.write(question);
155
+
156
+ // CRITICAL: check the queue FIRST, even if the stream has closed.
157
+ // Lines that were already read but not yet consumed must still be
158
+ // returned. Only reject when both the queue is empty AND the stream
159
+ // is closed — nothing more is coming.
160
+ if (lineQueue.length > 0) {
161
+ return Promise.resolve((lineQueue.shift() || '').trim());
162
+ }
163
+ if (streamClosed) {
164
+ return Promise.reject(new PromptAbortError('Input stream closed'));
165
+ }
166
+ return new Promise((resolve, reject) => {
167
+ waiters.push({
168
+ resolve: (line) => resolve((line || '').trim()),
169
+ reject,
170
+ });
171
+ });
172
+ }
173
+
174
+ function close() {
175
+ closedByUs = true;
176
+ rl.close();
177
+ }
178
+
179
+ return { ask, close };
180
+ }
181
+
182
+ /**
183
+ * Ask the user to pick one or more choices from a list.
184
+ *
185
+ * choices: array of { key, id, label }
186
+ * - `key` is the short token the user types ("1", "2", ...).
187
+ * - `id` is the canonical identifier returned to the caller.
188
+ * - `label` is the human name shown in error messages.
189
+ *
190
+ * Options:
191
+ * default — default token(s) when user hits Enter (string, may be comma list)
192
+ * allowMulti — if false, reject multi-token answers (default: true)
193
+ * expand — optional (id) => string[] to expand aliases like "all"
194
+ * maxAttempts — retry limit on all-invalid input (default: 3)
195
+ *
196
+ * Return value semantics:
197
+ * - All tokens valid → return resolved/expanded ids
198
+ * - Mixed valid+invalid → accept valid, warn about invalid, return (no re-prompt)
199
+ * - Zero valid tokens → print friendly error + list valid options + re-prompt
200
+ * - After maxAttempts failed rounds → throw PromptAbortError
201
+ */
202
+ async function askChoice(
203
+ question,
204
+ {
205
+ choices,
206
+ default: defaultAnswer = '',
207
+ allowMulti = true,
208
+ expand = null,
209
+ maxAttempts = 3,
210
+ } = {}
211
+ ) {
212
+ if (!Array.isArray(choices) || choices.length === 0) {
213
+ throw new Error('askChoice: `choices` must be a non-empty array');
214
+ }
215
+
216
+ const validKeys = choices.map((c) => c.key);
217
+ const validIds = choices.map((c) => c.id);
218
+ const hint = `Valid options: ${validKeys.join(', ')} (or ${validIds.join(', ')})`;
219
+
220
+ const session = getSession();
221
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
222
+ const raw = await session.ask(question);
223
+ const source = raw === '' ? defaultAnswer : raw;
224
+
225
+ if (source === '') {
226
+ console.log(` ⚠ No input and no default. ${hint}`);
227
+ continue;
228
+ }
229
+
230
+ const tokens = source
231
+ .split(',')
232
+ .map((s) => s.trim())
233
+ .filter(Boolean);
234
+
235
+ if (!allowMulti && tokens.length > 1) {
236
+ console.log(` ⚠ Only one choice allowed, you typed ${tokens.length}.`);
237
+ continue;
238
+ }
239
+
240
+ const resolved = [];
241
+ const invalid = [];
242
+ for (const tok of tokens) {
243
+ const match = choices.find((c) => c.key === tok || c.id === tok);
244
+ if (!match) {
245
+ invalid.push(tok);
246
+ } else if (expand) {
247
+ for (const id of expand(match.id)) resolved.push(id);
248
+ } else {
249
+ resolved.push(match.id);
250
+ }
251
+ }
252
+
253
+ if (resolved.length === 0) {
254
+ console.log(` ⚠ Didn't recognize: ${invalid.map((t) => `"${t}"`).join(', ')}`);
255
+ console.log(` ${hint}`);
256
+ console.log();
257
+ continue;
258
+ }
259
+
260
+ if (invalid.length > 0) {
261
+ console.log(` ⚠ Skipping unknown: ${invalid.map((t) => `"${t}"`).join(', ')}`);
262
+ }
263
+
264
+ // Deduplicate while preserving order
265
+ return [...new Set(resolved)];
266
+ }
267
+
268
+ throw new PromptAbortError(
269
+ `No valid selection after ${maxAttempts} attempts`
270
+ );
271
+ }
272
+
273
+ /**
274
+ * Yes/no prompt. Returns boolean.
275
+ *
276
+ * Options:
277
+ * default — 'y' | 'n' (default: 'n')
278
+ * maxAttempts — retry limit (default: 3)
279
+ */
280
+ async function askConfirm(
281
+ question,
282
+ { default: defaultAnswer = 'n', maxAttempts = 3 } = {}
283
+ ) {
284
+ const dflt = defaultAnswer.toLowerCase() === 'y' ? 'y' : 'n';
285
+
286
+ const session = getSession();
287
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
288
+ const raw = (await session.ask(question)).toLowerCase();
289
+ const answer = raw === '' ? dflt : raw;
290
+
291
+ if (answer === 'y' || answer === 'yes') return true;
292
+ if (answer === 'n' || answer === 'no') return false;
293
+
294
+ console.log(` ⚠ Please answer "y" or "n".`);
295
+ }
296
+
297
+ throw new PromptAbortError(
298
+ `No valid yes/no answer after ${maxAttempts} attempts`
299
+ );
300
+ }
301
+
302
+ /**
303
+ * Free-text prompt with optional validation.
304
+ *
305
+ * Options:
306
+ * default — returned when user hits Enter with no input
307
+ * validate — (value) => true | string (string = error message to show)
308
+ * maxAttempts — retry limit (default: 3)
309
+ */
310
+ async function askText(
311
+ question,
312
+ { default: defaultAnswer = '', validate = null, maxAttempts = 3 } = {}
313
+ ) {
314
+ const session = getSession();
315
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
316
+ const raw = await session.ask(question);
317
+ const value = raw === '' ? defaultAnswer : raw;
318
+
319
+ if (validate) {
320
+ const result = validate(value);
321
+ if (result !== true) {
322
+ console.log(` ⚠ ${typeof result === 'string' ? result : 'Invalid input.'}`);
323
+ continue;
324
+ }
325
+ } else if (value === '') {
326
+ console.log(` ⚠ Please enter a value.`);
327
+ continue;
328
+ }
329
+
330
+ return value;
331
+ }
332
+
333
+ throw new PromptAbortError(
334
+ `No valid text input after ${maxAttempts} attempts`
335
+ );
336
+ }
337
+
338
+ /**
339
+ * Close the shared session so the process can exit cleanly.
340
+ * Safe to call even if no prompts were used. Idempotent.
341
+ */
342
+ function closeSession() {
343
+ if (sharedSession) {
344
+ sharedSession.close();
345
+ sharedSession = null;
346
+ }
347
+ }
348
+
349
+ module.exports = {
350
+ askChoice,
351
+ askConfirm,
352
+ askText,
353
+ closeSession,
354
+ PromptAbortError,
355
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * rihal-code postinstall hook — runs automatically after `npm install`
3
+ */
4
+
5
+ // Only print the welcome if not running in CI/test environments
6
+ if (process.env.CI || process.env.NODE_ENV === 'test') {
7
+ process.exit(0);
8
+ }
9
+
10
+ console.log(`
11
+ 🕌 Rihal Code installed.
12
+
13
+ First-time setup:
14
+ npx @hanzlahabib/rihal-code install # set up agents + slash commands
15
+ npx @hanzlahabib/rihal-code tiers # see the tier map
16
+
17
+ 🌱 The Golden Path (say these phrases in your AI IDE):
18
+ 1. "scaffold a new project" → rihal-scaffold-project
19
+ 2. "create a PRD" → rihal-create-prd
20
+ 3. "create a story" → rihal-create-story
21
+ 4. "plan a sprint" → rihal-sprint-planning
22
+ 5. "dev this story" → rihal-dev-story
23
+ 6. "review this code" → rihal-code-review
24
+ 7. "sprint status" → rihal-sprint-status
25
+
26
+ More:
27
+ npx @hanzlahabib/rihal-code help # all commands (grouped)
28
+ npx @hanzlahabib/rihal-code dashboard # view-only Diwan on :7717
29
+
30
+ Docs: https://github.com/hanzlahabib/rihal-code
31
+ Tiers: docs/TIERS.md · Standards: docs/STANDARDS.md
32
+ `);
@@ -0,0 +1,94 @@
1
+ /**
2
+ * rihal-code set-mode — toggle the communication mode.
3
+ *
4
+ * Thin wrapper over `rihal-code config communication_mode <value>` with
5
+ * inline explanations of what each mode changes. Supports the same
6
+ * typo suggestions as the underlying config setter.
7
+ *
8
+ * Usage:
9
+ * rihal-code set-mode show current mode + explanation
10
+ * rihal-code set-mode guided switch to guided (ask at gates)
11
+ * rihal-code set-mode yolo switch to yolo (skip menus, trust defaults)
12
+ *
13
+ * Affects:
14
+ * - Workflow step files ("halt at menu" vs "pick default and continue")
15
+ * - /rihal:kickoff next-step menu (interactive vs auto-continue)
16
+ * - github-sync confirmation prompts (yolo still requires --force-yolo
17
+ * for github mutations — see docs/adr/0001-github-sync-as-cli.md)
18
+ * - /rihal:pause and /rihal:resume (yolo skips the confirmation prompt
19
+ * on resume; guided always asks)
20
+ * - All agent skill files that read communication_mode from config
21
+ */
22
+
23
+ const fs = require('fs');
24
+ const path = require('path');
25
+ const {
26
+ loadConfig,
27
+ setConfigValue,
28
+ VALID_COMMUNICATION_MODES,
29
+ } = require('./lib/config.cjs');
30
+
31
+ const MODE_DESCRIPTIONS = {
32
+ guided:
33
+ 'Ask questions, confirm at every major gate, halt at decision menus.\n' +
34
+ ' Recommended for: first-time use, critical projects, new domains.',
35
+ yolo:
36
+ 'Skip menus, use sensible defaults, report decisions in the final summary.\n' +
37
+ ' Destructive ops (github push, rm, force-push) STILL require\n' +
38
+ ' explicit confirmation unless you also pass --force-yolo.\n' +
39
+ ' Recommended for: experienced solo projects, prototypes, CI.',
40
+ };
41
+
42
+ module.exports = function setMode(args) {
43
+ const cwd = process.cwd();
44
+ const rihalDir = path.join(cwd, '.rihal');
45
+
46
+ if (!fs.existsSync(rihalDir)) {
47
+ console.error(`❌ No .rihal/ directory found in ${cwd}`);
48
+ console.error(` Run 'rihal-code install' first.`);
49
+ process.exit(1);
50
+ }
51
+
52
+ const requested = args[0];
53
+
54
+ if (!requested) {
55
+ // Show current + available modes
56
+ const config = loadConfig(cwd);
57
+ const current = config.communication_mode || 'guided';
58
+ console.log(`\n🕌 Communication mode: ${current}\n`);
59
+ for (const mode of VALID_COMMUNICATION_MODES) {
60
+ const marker = mode === current ? ' ← current' : '';
61
+ console.log(` • ${mode}${marker}`);
62
+ console.log(` ${MODE_DESCRIPTIONS[mode]}`);
63
+ console.log();
64
+ }
65
+ console.log(`Usage: rihal-code set-mode <${[...VALID_COMMUNICATION_MODES].join('|')}>`);
66
+ console.log();
67
+ return;
68
+ }
69
+
70
+ // Delegate to the shared config setter — it handles validation,
71
+ // typo suggestions, and atomic writes.
72
+ const previous = loadConfig(cwd).communication_mode || 'guided';
73
+ const result = setConfigValue(cwd, 'communication_mode', requested);
74
+ if (!result.ok) {
75
+ console.error(`\n❌ ${result.error}`);
76
+ if (result.suggestion) {
77
+ console.error(` Did you mean '${result.suggestion}'?`);
78
+ }
79
+ console.error();
80
+ process.exit(1);
81
+ }
82
+
83
+ console.log(`\n✅ Communication mode: ${previous} → ${requested}`);
84
+ console.log();
85
+ console.log(` ${MODE_DESCRIPTIONS[requested]}`);
86
+ console.log();
87
+
88
+ if (requested === 'yolo') {
89
+ console.log(` ⚠ Note: destructive operations (github-sync, uninstall,`);
90
+ console.log(` force push) still require explicit confirmation unless`);
91
+ console.log(` --force-yolo / --yes is passed.`);
92
+ console.log();
93
+ }
94
+ };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * rihal-code set-profile — change the model profile for the current project
3
+ *
4
+ * Usage:
5
+ * npx @hanzlahabib/rihal-code set-profile balanced
6
+ * npx @hanzlahabib/rihal-code set-profile quality
7
+ * npx @hanzlahabib/rihal-code set-profile budget
8
+ * npx @hanzlahabib/rihal-code set-profile inherit
9
+ * npx @hanzlahabib/rihal-code set-profile # show current
10
+ *
11
+ * This is a thin wrapper over `rihal-code config model_profile <name>`.
12
+ * All config read/write goes through cli/lib/config.cjs, which handles
13
+ * atomic writes, allowlist validation, and typo suggestions.
14
+ */
15
+
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+ const {
19
+ listProfiles,
20
+ getProfile,
21
+ getResolvedMapForProfile,
22
+ formatMapAsTable,
23
+ getProjectProfile,
24
+ } = require('./lib/model-profiles.cjs');
25
+ const { setConfigValue, getConfigValue } = require('./lib/config.cjs');
26
+
27
+ module.exports = function setProfile(args) {
28
+ const cwd = process.cwd();
29
+ const rihalDir = path.join(cwd, '.rihal');
30
+
31
+ if (!fs.existsSync(rihalDir)) {
32
+ console.error(`❌ No .rihal/ directory found in ${cwd}`);
33
+ console.error(` Run 'npx @hanzlahabib/rihal-code install' first.`);
34
+ process.exit(1);
35
+ }
36
+
37
+ const requested = args[0];
38
+ const available = listProfiles();
39
+
40
+ if (!requested) {
41
+ // Show current profile + available options
42
+ const current = getProjectProfile(cwd);
43
+ console.log(`\n🕌 Current profile: ${current.profile}\n`);
44
+ if (Object.keys(current.overrides).length > 0) {
45
+ console.log(` Overrides:`);
46
+ for (const [agent, model] of Object.entries(current.overrides)) {
47
+ console.log(` ${agent} → ${model}`);
48
+ }
49
+ console.log();
50
+ }
51
+ console.log(`Available profiles:`);
52
+ for (const name of available) {
53
+ const p = getProfile(name);
54
+ const marker = name === current.profile ? ' ← current' : '';
55
+ console.log(` • ${name}${marker}`);
56
+ console.log(` ${p.description}`);
57
+ }
58
+ console.log(`\nUsage: npx @hanzlahabib/rihal-code set-profile <name>`);
59
+ return;
60
+ }
61
+
62
+ const previous = getConfigValue(cwd, 'model_profile') || '(default)';
63
+
64
+ const result = setConfigValue(cwd, 'model_profile', requested);
65
+ if (!result.ok) {
66
+ console.error(`❌ ${result.error}`);
67
+ if (result.suggestion) {
68
+ console.error(` Did you mean '${result.suggestion}'?`);
69
+ }
70
+ console.error(` Available: ${available.join(', ')}`);
71
+ process.exit(1);
72
+ }
73
+
74
+ console.log(`\n✅ Profile changed: ${previous} → ${requested}\n`);
75
+
76
+ // Show the new resolved map
77
+ const map = getResolvedMapForProfile(requested);
78
+ console.log(formatMapAsTable(map));
79
+ console.log();
80
+ };
@@ -0,0 +1,82 @@
1
+ /**
2
+ * rihal-code show-model — print the resolved model for an agent (or all agents)
3
+ *
4
+ * Usage:
5
+ * npx @hanzlahabib/rihal-code show-model # all agents in current profile
6
+ * npx @hanzlahabib/rihal-code show-model waleed # single agent
7
+ * npx @hanzlahabib/rihal-code show-model --profile=quality # different profile
8
+ */
9
+
10
+ const {
11
+ listProfiles,
12
+ getProfile,
13
+ resolveModelForAgent,
14
+ getResolvedMapForProfile,
15
+ formatMapAsTable,
16
+ getProjectProfile,
17
+ } = require('./lib/model-profiles.cjs');
18
+
19
+ function parseArgs(args) {
20
+ const result = { agent: null, profile: null };
21
+ for (const arg of args) {
22
+ if (arg.startsWith('--profile=')) {
23
+ result.profile = arg.slice('--profile='.length);
24
+ } else if (arg.startsWith('--agent=')) {
25
+ result.agent = arg.slice('--agent='.length);
26
+ } else if (!arg.startsWith('--')) {
27
+ result.agent = arg;
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+
33
+ module.exports = function showModel(args) {
34
+ const parsed = parseArgs(args);
35
+ const project = getProjectProfile();
36
+ const profile = parsed.profile || project.profile;
37
+
38
+ if (!listProfiles().includes(profile)) {
39
+ console.error(`❌ Unknown profile '${profile}'`);
40
+ console.error(` Available: ${listProfiles().join(', ')}`);
41
+ process.exit(1);
42
+ }
43
+
44
+ const profileDef = getProfile(profile);
45
+
46
+ if (parsed.agent) {
47
+ // Single agent
48
+ try {
49
+ const model = resolveModelForAgent(parsed.agent, {
50
+ profile,
51
+ overrides: parsed.profile ? {} : project.overrides,
52
+ });
53
+ console.log(`${parsed.agent} (profile: ${profile}) → ${model ?? 'inherit (runtime picks)'}`);
54
+ } catch (e) {
55
+ console.error(`❌ ${e.message}`);
56
+ process.exit(1);
57
+ }
58
+ return;
59
+ }
60
+
61
+ // All agents
62
+ console.log(`\n🕌 Profile: ${profile}`);
63
+ console.log(` ${profileDef.description}\n`);
64
+
65
+ const map = getResolvedMapForProfile(profile);
66
+
67
+ // Apply project overrides if we're showing the current project profile
68
+ if (!parsed.profile && Object.keys(project.overrides).length > 0) {
69
+ console.log(` Overrides applied:`);
70
+ for (const [agent, rawModel] of Object.entries(project.overrides)) {
71
+ const resolved = resolveModelForAgent(agent, {
72
+ profile,
73
+ overrides: project.overrides,
74
+ });
75
+ map[agent] = resolved;
76
+ console.log(` ${agent} → ${rawModel} (resolved: ${resolved ?? 'inherit'})`);
77
+ }
78
+ console.log();
79
+ }
80
+
81
+ console.log(formatMapAsTable(map));
82
+ };
package/cli/team.js ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * rihal-code team — list the team roster
3
+ */
4
+
5
+ const fs = require('fs');
6
+ const path = require('path');
7
+
8
+ module.exports = function team(args, { packageRoot }) {
9
+ const digestDir = path.join(packageRoot, 'rihal/digests');
10
+
11
+ if (!fs.existsSync(digestDir)) {
12
+ console.error('Agent digests not found. Is the package installed correctly?');
13
+ process.exit(1);
14
+ }
15
+
16
+ const files = fs.readdirSync(digestDir).filter((f) => f.endsWith('.md') && f !== 'README.md');
17
+
18
+ console.log(`\n🕌 Rihal Code Team Roster (${files.length} agents)\n`);
19
+ console.log('─'.repeat(80));
20
+
21
+ for (const file of files.sort()) {
22
+ const content = fs.readFileSync(path.join(digestDir, file), 'utf8');
23
+ const firstLine = content.split('\n')[0].replace(/^#\s*/, '');
24
+ const arabic = (content.match(/\*\*Arabic:\*\*\s*(.+)/) || [])[1] || '';
25
+ const authority = (content.match(/\*\*Authority:\*\*\s*(.+)/) || [])[1] || '';
26
+
27
+ console.log(`${firstLine.padEnd(45)} ${arabic.padEnd(15)}`);
28
+ if (authority) console.log(` → ${authority.slice(0, 70)}`);
29
+ console.log();
30
+ }
31
+
32
+ console.log('─'.repeat(80));
33
+ console.log(`\nFor full agent details: cat rihal/digests/{agent}.md`);
34
+ console.log(`For full skill: rihal/skills/agents/{agent-dir}/SKILL.md\n`);
35
+ };