@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,65 @@
1
+ # Verifier — Data-Flow Trace (Step 4b / Level 4)
2
+
3
+ Artifacts that pass Levels 1-3 (exist, substantive, wired) can still be hollow if their data source produces empty or hardcoded values. Level 4 traces upstream from the artifact to verify real data flows through the wiring.
4
+
5
+ **When to run:** For each artifact that passes Level 3 (WIRED) and renders dynamic data (components, pages, dashboards — not utilities or configs).
6
+
7
+ ## How
8
+
9
+ ### 1. Identify the data variable
10
+
11
+ What state/prop does the artifact render?
12
+
13
+ ```bash
14
+ # Find state variables that are rendered in JSX/TSX
15
+ grep -n -E "useState|useQuery|useSWR|useStore|props\." "$artifact" 2>/dev/null
16
+ ```
17
+
18
+ ### 2. Trace the data source
19
+
20
+ Where does that variable get populated?
21
+
22
+ ```bash
23
+ # Find the fetch/query that populates the state
24
+ grep -n -A 5 "set${STATE_VAR}\|${STATE_VAR}\s*=" "$artifact" 2>/dev/null | grep -E "fetch|axios|query|store|dispatch|props\."
25
+ ```
26
+
27
+ ### 3. Verify the source produces real data
28
+
29
+ Does the API/store return actual data or static/empty values?
30
+
31
+ ```bash
32
+ # Check the API route or data source for real DB queries vs static returns
33
+ grep -n -E "prisma\.|db\.|query\(|findMany|findOne|select|FROM" "$source_file" 2>/dev/null
34
+
35
+ # Flag: static returns with no query
36
+ grep -n -E "return.*json\(\s*\[\]|return.*json\(\s*\{\}" "$source_file" 2>/dev/null
37
+ ```
38
+
39
+ ### 4. Check for disconnected props
40
+
41
+ Props passed to child components that are hardcoded empty at the call site:
42
+
43
+ ```bash
44
+ # Find where the component is used and check prop values
45
+ grep -r -A 3 "<${COMPONENT_NAME}" "${search_path:-src/}" --include="*.tsx" 2>/dev/null | grep -E "=\{(\[\]|\{\}|null|''|\"\")\}"
46
+ ```
47
+
48
+ ## Data-flow status
49
+
50
+ | Data Source | Produces Real Data | Status |
51
+ | ---------- | ------------------ | ------ |
52
+ | DB query found | Yes | ✓ FLOWING |
53
+ | Fetch exists, static fallback only | No | ⚠️ STATIC |
54
+ | No data source found | N/A | ✗ DISCONNECTED |
55
+ | Props hardcoded empty at call site | No | ✗ HOLLOW_PROP |
56
+
57
+ ## Final Artifact Status (updated with Level 4)
58
+
59
+ | Exists | Substantive | Wired | Data Flows | Status |
60
+ | ------ | ----------- | ----- | ---------- | ------ |
61
+ | ✓ | ✓ | ✓ | ✓ | ✓ VERIFIED |
62
+ | ✓ | ✓ | ✓ | ✗ | ⚠️ HOLLOW — wired but data disconnected |
63
+ | ✓ | ✓ | ✗ | - | ⚠️ ORPHANED |
64
+ | ✓ | ✗ | - | - | ✗ STUB |
65
+ | ✗ | - | - | - | ✗ MISSING |
@@ -0,0 +1,51 @@
1
+ # Verifier — Status Determination + Gap Output (Steps 8–10)
2
+
3
+ ## Step 8: Identify Human Verification Needs
4
+
5
+ **Always needs human:** Visual appearance, user flow completion, real-time behavior, external service integration, performance feel, error message clarity.
6
+
7
+ **Needs human if uncertain:** Complex wiring grep can't trace, dynamic state behavior, edge cases.
8
+
9
+ **Format:**
10
+
11
+ ```markdown
12
+ ### 1. {Test Name}
13
+
14
+ **Test:** {What to do}
15
+ **Expected:** {What should happen}
16
+ **Why human:** {Why can't verify programmatically}
17
+ ```
18
+
19
+ ## Step 9: Determine Overall Status
20
+
21
+ **Status: passed** — All truths VERIFIED, all artifacts pass levels 1-3, all key links WIRED, no blocker anti-patterns.
22
+
23
+ **Status: gaps_found** — One or more truths FAILED, artifacts MISSING/STUB, key links NOT_WIRED, or blocker anti-patterns found.
24
+
25
+ **Status: human_needed** — All automated checks pass but items flagged for human verification.
26
+
27
+ **Score:** `verified_truths / total_truths`
28
+
29
+ ## Step 10: Structure Gap Output (If Gaps Found)
30
+
31
+ Structure gaps in YAML frontmatter for `/rihal:plan --gaps`:
32
+
33
+ ```yaml
34
+ gaps:
35
+ - truth: "Observable truth that failed"
36
+ status: failed
37
+ reason: "Brief explanation"
38
+ artifacts:
39
+ - path: "src/path/to/file.tsx"
40
+ issue: "What's wrong"
41
+ missing:
42
+ - "Specific thing to add/fix"
43
+ ```
44
+
45
+ - `truth`: The observable truth that failed
46
+ - `status`: failed | partial
47
+ - `reason`: Brief explanation
48
+ - `artifacts`: Files with issues
49
+ - `missing`: Specific things to add/fix
50
+
51
+ **Group related gaps by concern** — if multiple truths fail from the same root cause, note this to help the planner create focused plans.
@@ -0,0 +1,56 @@
1
+ # Verifier — Key Link Wiring Patterns (Step 5)
2
+
3
+ Key links are critical connections. If broken, the goal fails even with all artifacts present.
4
+
5
+ Use rihal-tools for key link verification against must_haves in PLAN frontmatter:
6
+
7
+ ```bash
8
+ LINKS_RESULT=$(node ".rihal/bin/rihal-tools.cjs" verify key-links "$PLAN_PATH")
9
+ ```
10
+
11
+ Parse JSON result: `{ all_verified, verified, total, links: [{from, to, via, verified, detail}] }`
12
+
13
+ For each link:
14
+ - `verified=true` → WIRED
15
+ - `verified=false` with "not found" in detail → NOT_WIRED
16
+ - `verified=false` with "Pattern not found" → PARTIAL
17
+
18
+ ## Fallback Patterns
19
+
20
+ Use these if `must_haves.key_links` not defined in PLAN.
21
+
22
+ ### Pattern: Component → API
23
+
24
+ ```bash
25
+ grep -E "fetch\(['\"].*$api_path|axios\.(get|post).*$api_path" "$component" 2>/dev/null
26
+ grep -A 5 "fetch\|axios" "$component" | grep -E "await|\.then|setData|setState" 2>/dev/null
27
+ ```
28
+
29
+ Status: WIRED (call + response handling) | PARTIAL (call, no response use) | NOT_WIRED (no call)
30
+
31
+ ### Pattern: API → Database
32
+
33
+ ```bash
34
+ grep -E "prisma\.$model|db\.$model|$model\.(find|create|update|delete)" "$route" 2>/dev/null
35
+ grep -E "return.*json.*\w+|res\.json\(\w+" "$route" 2>/dev/null
36
+ ```
37
+
38
+ Status: WIRED (query + result returned) | PARTIAL (query, static return) | NOT_WIRED (no query)
39
+
40
+ ### Pattern: Form → Handler
41
+
42
+ ```bash
43
+ grep -E "onSubmit=\{|handleSubmit" "$component" 2>/dev/null
44
+ grep -A 10 "onSubmit.*=" "$component" | grep -E "fetch|axios|mutate|dispatch" 2>/dev/null
45
+ ```
46
+
47
+ Status: WIRED (handler + API call) | STUB (only logs/preventDefault) | NOT_WIRED (no handler)
48
+
49
+ ### Pattern: State → Render
50
+
51
+ ```bash
52
+ grep -E "useState.*$state_var|\[$state_var," "$component" 2>/dev/null
53
+ grep -E "\{.*$state_var.*\}|\{$state_var\." "$component" 2>/dev/null
54
+ ```
55
+
56
+ Status: WIRED (state displayed) | NOT_WIRED (state exists, not rendered)
@@ -0,0 +1,28 @@
1
+ # Verifier — Requirements Coverage (Step 6)
2
+
3
+ ## 6a. Extract requirement IDs from PLAN frontmatter
4
+
5
+ ```bash
6
+ grep -A5 "^requirements:" "$PHASE_DIR"/*-SPRINT.md 2>/dev/null
7
+ ```
8
+
9
+ Collect ALL requirement IDs declared across plans for this phase.
10
+
11
+ ## 6b. Cross-reference against REQUIREMENTS.md
12
+
13
+ For each requirement ID from plans:
14
+
15
+ 1. Find its full description in REQUIREMENTS.md (`**REQ-ID**: description`)
16
+ 2. Map to supporting truths/artifacts verified in Steps 3-5
17
+ 3. Determine status:
18
+ - ✓ SATISFIED: Implementation evidence found that fulfills the requirement
19
+ - ✗ BLOCKED: No evidence or contradicting evidence
20
+ - ? NEEDS HUMAN: Can't verify programmatically (UI behavior, UX quality)
21
+
22
+ ## 6c. Check for orphaned requirements
23
+
24
+ ```bash
25
+ grep -E "Phase $PHASE_NUM" .rihal/REQUIREMENTS.md 2>/dev/null
26
+ ```
27
+
28
+ If REQUIREMENTS.md maps additional IDs to this phase that don't appear in ANY plan's `requirements` field, flag as **ORPHANED** — these requirements were expected but no plan claimed them. ORPHANED requirements MUST appear in the verification report.
@@ -0,0 +1,131 @@
1
+ # Verifier — VERIFICATION.md Template + Return Format
2
+
3
+ ## Create VERIFICATION.md
4
+
5
+ **ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
6
+
7
+ Create `.rihal/phases/{phase_dir}/{phase_num}-VERIFICATION.md`:
8
+
9
+ ```markdown
10
+ ---
11
+ phase: XX-name
12
+ verified: YYYY-MM-DDTHH:MM:SSZ
13
+ status: passed | gaps_found | human_needed
14
+ score: N/M must-haves verified
15
+ re_verification: # Only if previous VERIFICATION.md existed
16
+ previous_status: gaps_found
17
+ previous_score: 2/5
18
+ gaps_closed:
19
+ - "Truth that was fixed"
20
+ gaps_remaining: []
21
+ regressions: []
22
+ gaps: # Only if status: gaps_found
23
+ - truth: "Observable truth that failed"
24
+ status: failed
25
+ reason: "Why it failed"
26
+ artifacts:
27
+ - path: "src/path/to/file.tsx"
28
+ issue: "What's wrong"
29
+ missing:
30
+ - "Specific thing to add/fix"
31
+ human_verification: # Only if status: human_needed
32
+ - test: "What to do"
33
+ expected: "What should happen"
34
+ why_human: "Why can't verify programmatically"
35
+ ---
36
+
37
+ # Phase {X}: {Name} Verification Report
38
+
39
+ **Phase Goal:** {goal from ROADMAP.md}
40
+ **Verified:** {timestamp}
41
+ **Status:** {status}
42
+ **Re-verification:** {Yes — after gap closure | No — initial verification}
43
+
44
+ ## Goal Achievement
45
+
46
+ ### Observable Truths
47
+
48
+ | # | Truth | Status | Evidence |
49
+ | --- | ------- | ---------- | -------------- |
50
+ | 1 | {truth} | ✓ VERIFIED | {evidence} |
51
+ | 2 | {truth} | ✗ FAILED | {what's wrong} |
52
+
53
+ **Score:** {N}/{M} truths verified
54
+
55
+ ### Required Artifacts
56
+
57
+ | Artifact | Expected | Status | Details |
58
+ | -------- | ----------- | ------ | ------- |
59
+ | `path` | description | status | details |
60
+
61
+ ### Key Link Verification
62
+
63
+ | From | To | Via | Status | Details |
64
+ | ---- | --- | --- | ------ | ------- |
65
+
66
+ ### Data-Flow Trace (Level 4)
67
+
68
+ | Artifact | Data Variable | Source | Produces Real Data | Status |
69
+ | -------- | ------------- | ------ | ------------------ | ------ |
70
+
71
+ ### Behavioral Spot-Checks
72
+
73
+ | Behavior | Command | Result | Status |
74
+ | -------- | ------- | ------ | ------ |
75
+
76
+ ### Requirements Coverage
77
+
78
+ | Requirement | Source Plan | Description | Status | Evidence |
79
+ | ----------- | ---------- | ----------- | ------ | -------- |
80
+
81
+ ### Anti-Patterns Found
82
+
83
+ | File | Line | Pattern | Severity | Impact |
84
+ | ---- | ---- | ------- | -------- | ------ |
85
+
86
+ ### Human Verification Required
87
+
88
+ {Items needing human testing — detailed format for user}
89
+
90
+ ### Gaps Summary
91
+
92
+ {Narrative summary of what's missing and why}
93
+
94
+ ---
95
+
96
+ _Verified: {timestamp}_
97
+ _Verifier: the agent (rihal-verifier)_
98
+ ```
99
+
100
+ ## Return to Orchestrator
101
+
102
+ **DO NOT COMMIT.** The orchestrator bundles VERIFICATION.md with other phase artifacts.
103
+
104
+ Return with:
105
+
106
+ ```markdown
107
+ ## Verification Complete
108
+
109
+ **Status:** {passed | gaps_found | human_needed}
110
+ **Score:** {N}/{M} must-haves verified
111
+ **Report:** .rihal/phases/{phase_dir}/{phase_num}-VERIFICATION.md
112
+
113
+ {If passed:}
114
+ All must-haves verified. Phase goal achieved. Ready to proceed.
115
+
116
+ {If gaps_found:}
117
+ ### Gaps Found
118
+ {N} gaps blocking goal achievement:
119
+ 1. **{Truth 1}** — {reason}
120
+ - Missing: {what needs to be added}
121
+
122
+ Structured gaps in VERIFICATION.md frontmatter for `/rihal:plan --gaps`.
123
+
124
+ {If human_needed:}
125
+ ### Human Verification Required
126
+ {N} items need human testing:
127
+ 1. **{Test name}** — {what to do}
128
+ - Expected: {what should happen}
129
+
130
+ Automated checks passed. Awaiting human verification.
131
+ ```
@@ -0,0 +1,196 @@
1
+ /**
2
+ * code-references.cjs — Extract and verify file/symbol references in text.
3
+ *
4
+ * Pure Node stdlib module. No external dependencies.
5
+ *
6
+ * Usage:
7
+ * const cr = require('./code-references.cjs');
8
+ * const refs = cr.extractReferences(planText);
9
+ * const result = cr.verifyReferences(refs, projectRoot);
10
+ *
11
+ * Exports:
12
+ * - extractReferences(text) → { files, symbols, fileLines }
13
+ * - verifyReferences(refs, projectRoot) → { verified, missing, summary }
14
+ *
15
+ * Detection patterns:
16
+ * - Files: \b[\w/.-]+\.(py|ts|tsx|js|jsx|md|yaml|yml|json|sh|cjs|mjs|rs|go|java|rb)\b
17
+ * - Symbols (snake_case): \b[a-z_][a-z0-9_]+\( → strip the (
18
+ * - Symbols (CamelCase): \b[A-Z][A-Za-z0-9]+\b (filter common English words)
19
+ * - File:line: \b([\w/.-]+\.\w+):(\d+)\b
20
+ *
21
+ * Verification uses fs.existsSync for files, grep for symbols.
22
+ * Returns summary with { total, verified, missing, ratio }.
23
+ */
24
+
25
+ const fs = require('fs');
26
+ const path = require('path');
27
+ const { execSync } = require('child_process');
28
+
29
+ // Common English words to filter when detecting CamelCase symbols
30
+ const COMMON_ENGLISH = new Set([
31
+ 'The', 'A', 'An', 'And', 'Or', 'But', 'In', 'On', 'At', 'To', 'For',
32
+ 'From', 'With', 'By', 'As', 'Is', 'Are', 'Was', 'Were', 'Be', 'Been',
33
+ 'Have', 'Has', 'Had', 'Do', 'Does', 'Did', 'Can', 'Could', 'Will',
34
+ 'Would', 'Should', 'May', 'Might', 'Must', 'Shall', 'If', 'Then',
35
+ 'Else', 'Not', 'No', 'Yes', 'So', 'This', 'That', 'These', 'Those',
36
+ 'I', 'You', 'He', 'She', 'It', 'We', 'They', 'Me', 'Him', 'Her',
37
+ 'Us', 'Them', 'What', 'Which', 'Who', 'Whom', 'Whose', 'Where',
38
+ 'When', 'Why', 'How', 'Get', 'Set', 'Make', 'Take', 'Put', 'Let',
39
+ 'Call', 'Find', 'Use', 'Build', 'Create', 'Add', 'Remove', 'Delete',
40
+ 'Update', 'Read', 'Write', 'Check', 'Verify', 'Test', 'Run', 'Start',
41
+ 'Stop', 'Send', 'Receive', 'Process', 'Handle', 'Return', 'Export',
42
+ 'Import', 'Module', 'Class', 'Function', 'Method', 'Property',
43
+ // Common markdown/documentation headers and structure
44
+ 'Objective', 'Tasks', 'Task', 'Files', 'Action', 'Done', 'Step', 'Steps',
45
+ 'Section', 'Sections', 'Example', 'Examples', 'Note', 'Notes', 'Warning',
46
+ 'Warnings', 'Description', 'Descriptions', 'Process', 'Processes',
47
+ ]);
48
+
49
+ /**
50
+ * Extract candidate file paths and symbol names from text.
51
+ *
52
+ * Returns:
53
+ * {
54
+ * files: [ "src/auth.ts", "package.json", ... ],
55
+ * symbols: [ "handle_login", "ClassName", ... ],
56
+ * fileLines: [ { file: "src/auth.ts", line: 42 }, ... ]
57
+ * }
58
+ */
59
+ function extractReferences(text) {
60
+ const files = new Set();
61
+ const symbols = new Set();
62
+ const fileLines = [];
63
+
64
+ if (!text) return { files: [], symbols: [], fileLines: [] };
65
+
66
+ // Pattern 1: Files — matches file paths with known extensions
67
+ // \b[\w/.-]+\.(py|ts|tsx|js|jsx|md|yaml|yml|json|sh|cjs|mjs|rs|go|java|rb)\b
68
+ const filePattern = /\b([\w/.-]+\.(py|ts|tsx|js|jsx|md|yaml|yml|json|sh|cjs|mjs|rs|go|java|rb))\b/gi;
69
+ let match;
70
+ while ((match = filePattern.exec(text)) !== null) {
71
+ files.add(match[1]);
72
+ }
73
+
74
+ // Pattern 2: File:line references — matches "path.ext:NN"
75
+ // \b([\w/.-]+\.\w+):(\d+)\b
76
+ const fileLinePattern = /\b([\w/.-]+\.\w+):(\d+)\b/g;
77
+ while ((match = fileLinePattern.exec(text)) !== null) {
78
+ fileLines.push({ file: match[1], line: parseInt(match[2], 10) });
79
+ files.add(match[1]); // also collect as a file reference
80
+ }
81
+
82
+ // Pattern 3: Snake_case function names — matches "function_name("
83
+ // \b[a-z_][a-z0-9_]+\(
84
+ const snakeCasePattern = /\b([a-z_][a-z0-9_]+)\(/g;
85
+ while ((match = snakeCasePattern.exec(text)) !== null) {
86
+ symbols.add(match[1]);
87
+ }
88
+
89
+ // Pattern 4: CamelCase class/type names (filter common words)
90
+ // \b[A-Z][A-Za-z0-9]+\b
91
+ const camelCasePattern = /\b([A-Z][A-Za-z0-9]+)\b/g;
92
+ while ((match = camelCasePattern.exec(text)) !== null) {
93
+ const word = match[1];
94
+ // Skip common English words, very short names, and known common types
95
+ if (
96
+ !COMMON_ENGLISH.has(word) &&
97
+ word.length > 2 &&
98
+ !['String', 'Number', 'Boolean', 'Array', 'Object', 'Error', 'Promise',
99
+ 'Map', 'Set', 'Date', 'Math', 'Json', 'Regex', 'Node', 'Error'].includes(word)
100
+ ) {
101
+ symbols.add(word);
102
+ }
103
+ }
104
+
105
+ return {
106
+ files: Array.from(files),
107
+ symbols: Array.from(symbols),
108
+ fileLines: fileLines,
109
+ };
110
+ }
111
+
112
+ /**
113
+ * Verify references against the project root.
114
+ *
115
+ * Returns:
116
+ * {
117
+ * verified: { files: [...], symbols: [...] },
118
+ * missing: { files: [...], symbols: [...] },
119
+ * summary: { total: N, verified: M, missing: K, ratio: 0.X }
120
+ * }
121
+ */
122
+ function verifyReferences(refs, projectRoot) {
123
+ const verified = { files: [], symbols: [] };
124
+ const missing = { files: [], symbols: [] };
125
+
126
+ if (!refs || (!refs.files && !refs.symbols)) {
127
+ return {
128
+ verified,
129
+ missing,
130
+ summary: { total: 0, verified: 0, missing: 0, ratio: 1.0 },
131
+ };
132
+ }
133
+
134
+ // Verify files
135
+ if (refs.files && Array.isArray(refs.files)) {
136
+ for (const file of refs.files) {
137
+ const fullPath = path.join(projectRoot, file);
138
+ if (fs.existsSync(fullPath)) {
139
+ verified.files.push(file);
140
+ } else {
141
+ missing.files.push(file);
142
+ }
143
+ }
144
+ }
145
+
146
+ // Verify symbols — check if symbol appears in any source file
147
+ if (refs.symbols && Array.isArray(refs.symbols)) {
148
+ const verifiedSymbols = new Set();
149
+ const missingSymbols = new Set();
150
+
151
+ for (const symbol of refs.symbols) {
152
+ // Try grep to find symbol in the project
153
+ try {
154
+ // Search for the symbol as a whole word (with word boundaries)
155
+ // Pattern: \bsymbol\b or \bsymbol\( to catch function definitions or calls
156
+ const cmd = `grep -r "\\b${symbol}\\b" "${projectRoot}" --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" --include="*.py" --include="*.go" --include="*.rs" 2>/dev/null | head -1`;
157
+ const output = execSync(cmd, { encoding: 'utf8', stdio: 'pipe' });
158
+ if (output && output.trim()) {
159
+ verifiedSymbols.add(symbol);
160
+ } else {
161
+ missingSymbols.add(symbol);
162
+ }
163
+ } catch {
164
+ // grep failed or found nothing
165
+ missingSymbols.add(symbol);
166
+ }
167
+ }
168
+
169
+ verified.symbols = Array.from(verifiedSymbols);
170
+ missing.symbols = Array.from(missingSymbols);
171
+ }
172
+
173
+ // Calculate summary
174
+ const totalFiles = refs.files ? refs.files.length : 0;
175
+ const totalSymbols = refs.symbols ? refs.symbols.length : 0;
176
+ const total = totalFiles + totalSymbols;
177
+ const verifiedCount = verified.files.length + verified.symbols.length;
178
+ const missingCount = missing.files.length + missing.symbols.length;
179
+ const ratio = total > 0 ? verifiedCount / total : 1.0;
180
+
181
+ return {
182
+ verified,
183
+ missing,
184
+ summary: {
185
+ total,
186
+ verified: verifiedCount,
187
+ missing: missingCount,
188
+ ratio: Math.round(ratio * 100) / 100,
189
+ },
190
+ };
191
+ }
192
+
193
+ module.exports = {
194
+ extractReferences,
195
+ verifyReferences,
196
+ };
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Config — dotted-path get/set for .rihal/config.yaml.
3
+ *
4
+ * Supports single-level nested YAML (e.g. `workflow:\n discuss_mode: adaptive`)
5
+ * in addition to flat `key: value`. Stdlib-only.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ function configPathFor(projectRoot) {
12
+ return path.join(projectRoot, '.rihal', 'config.yaml');
13
+ }
14
+
15
+ /** Parse YAML text into a nested object. Supports one level of indentation. */
16
+ function parseNestedYaml(text) {
17
+ const out = {};
18
+ const lines = text.split('\n');
19
+ let currentSection = null;
20
+ for (const raw of lines) {
21
+ const line = raw.replace(/#.*$/, '').replace(/\s+$/, '');
22
+ if (!line.trim()) continue;
23
+
24
+ const indent = line.match(/^\s*/)[0].length;
25
+ const colonAt = line.indexOf(':');
26
+ if (colonAt === -1) continue;
27
+
28
+ const key = line.slice(indent, colonAt).trim();
29
+ let val = line.slice(colonAt + 1).trim();
30
+
31
+ if (indent === 0) {
32
+ if (val === '') {
33
+ // Section header
34
+ currentSection = key;
35
+ out[key] = {};
36
+ } else {
37
+ currentSection = null;
38
+ out[key] = stripQuotes(val);
39
+ }
40
+ } else if (currentSection) {
41
+ if (typeof out[currentSection] !== 'object' || out[currentSection] === null) {
42
+ out[currentSection] = {};
43
+ }
44
+ out[currentSection][key] = stripQuotes(val);
45
+ }
46
+ }
47
+ return out;
48
+ }
49
+
50
+ function stripQuotes(v) {
51
+ if (v.startsWith('"') && v.endsWith('"')) return v.slice(1, -1);
52
+ if (v.startsWith("'") && v.endsWith("'")) return v.slice(1, -1);
53
+ return v;
54
+ }
55
+
56
+ function serialise(config) {
57
+ const lines = [];
58
+ // Emit scalar keys first, then sections (mimics common YAML convention).
59
+ const scalars = [];
60
+ const sections = [];
61
+ for (const [k, v] of Object.entries(config)) {
62
+ if (v && typeof v === 'object' && !Array.isArray(v)) sections.push([k, v]);
63
+ else scalars.push([k, v]);
64
+ }
65
+ for (const [k, v] of scalars) {
66
+ lines.push(`${k}: ${quoteIfNeeded(v)}`);
67
+ }
68
+ for (const [k, v] of sections) {
69
+ lines.push(`${k}:`);
70
+ for (const [sk, sv] of Object.entries(v)) {
71
+ lines.push(` ${sk}: ${quoteIfNeeded(sv)}`);
72
+ }
73
+ }
74
+ return lines.join('\n') + '\n';
75
+ }
76
+
77
+ function quoteIfNeeded(v) {
78
+ if (v === null || v === undefined) return '';
79
+ const s = String(v);
80
+ if (/[\s:#]/.test(s) && !(s.startsWith('"') && s.endsWith('"'))) {
81
+ return `"${s.replace(/"/g, '\\"')}"`;
82
+ }
83
+ return s;
84
+ }
85
+
86
+ function getAt(config, dottedKey) {
87
+ const parts = String(dottedKey).split('.');
88
+ let cur = config;
89
+ for (const p of parts) {
90
+ if (cur == null || typeof cur !== 'object') return undefined;
91
+ cur = cur[p];
92
+ }
93
+ return cur;
94
+ }
95
+
96
+ function setAt(config, dottedKey, value) {
97
+ const parts = String(dottedKey).split('.');
98
+ let cur = config;
99
+ for (let i = 0; i < parts.length - 1; i++) {
100
+ const p = parts[i];
101
+ if (typeof cur[p] !== 'object' || cur[p] === null || Array.isArray(cur[p])) {
102
+ cur[p] = {};
103
+ }
104
+ cur = cur[p];
105
+ }
106
+ cur[parts[parts.length - 1]] = value;
107
+ }
108
+
109
+ /**
110
+ * config-get <dotted.key>
111
+ * Prints scalar directly (no JSON). Empty output + exit 0 if missing.
112
+ * Returns a string (or null for missing) the caller should print with console.log
113
+ * WITHOUT JSON-wrapping.
114
+ */
115
+ function cmdGet(projectRoot, dottedKey) {
116
+ if (!dottedKey) throw new Error('Usage: config-get <dotted.key>');
117
+ const cp = configPathFor(projectRoot);
118
+ if (!fs.existsSync(cp)) return null;
119
+ const config = parseNestedYaml(fs.readFileSync(cp, 'utf8'));
120
+ const val = getAt(config, dottedKey);
121
+ if (val === undefined || val === null) return null;
122
+ if (typeof val === 'object') return JSON.stringify(val);
123
+ return String(val);
124
+ }
125
+
126
+ function cmdSet(projectRoot, dottedKey, value) {
127
+ if (!dottedKey) throw new Error('Usage: config-set <dotted.key> <value>');
128
+ if (value === undefined) throw new Error('Usage: config-set <dotted.key> <value>');
129
+ const cp = configPathFor(projectRoot);
130
+ fs.mkdirSync(path.dirname(cp), { recursive: true });
131
+ const existing = fs.existsSync(cp) ? fs.readFileSync(cp, 'utf8') : '';
132
+ const config = parseNestedYaml(existing);
133
+ setAt(config, dottedKey, value);
134
+ const out = serialise(config);
135
+ const tmp = cp + '.tmp';
136
+ fs.writeFileSync(tmp, out, 'utf8');
137
+ fs.renameSync(tmp, cp);
138
+ return { ok: true, key: dottedKey, value, path: cp };
139
+ }
140
+
141
+ module.exports = {
142
+ cmdGet,
143
+ cmdSet,
144
+ parseNestedYaml,
145
+ serialise,
146
+ };