@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
package/cli/tiers.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * rihal-code tiers — print the tier map
3
+ *
4
+ * Reads docs/TIERS.md from the package and prints a compact version.
5
+ * Full detail stays in docs/TIERS.md (single source of truth).
6
+ */
7
+
8
+ module.exports = function tiers(_args, { packageJson }) {
9
+ console.log(`
10
+ šŸ•Œ Rihal Code v${packageJson.version} — Tiers
11
+
12
+ Everything is organized into 4 tiers + a preview track. Start with 🌱 Starter.
13
+
14
+ 🌱 STARTER — The Golden Path (7 skills)
15
+ First-time Rihalian. Scaffold → ship, end-to-end.
16
+ 1. rihal-scaffold-project "scaffold a new project"
17
+ 2. rihal-create-prd "create a PRD"
18
+ 3. rihal-create-story "create a story"
19
+ 4. rihal-sprint-planning "plan a sprint"
20
+ 5. rihal-dev-story "dev this story"
21
+ 6. rihal-code-review "review this code"
22
+ 7. rihal-sprint-status "sprint status"
23
+ Agents: Sadiq Ā· Hussain Ā· Nasser
24
+
25
+ 🌿 ADVANCED — Real Sprint Team (9 skills)
26
+ For teams running multiple sprints with formal ceremonies.
27
+ product-brief Ā· edit-prd Ā· validate-prd Ā· create-epics-and-stories
28
+ create-architecture Ā· create-ux-design Ā· frontend-design
29
+ qa-generate-e2e-tests Ā· retrospective
30
+ Agents: Waleed Ā· Ahmed Ā· Layla Ā· Zahra Ā· Haitham Ā· Yousef Ā· Fatima Ā· Hussain-SM
31
+
32
+ 🌳 ULTRA ADVANCED — Power User Workflows (6 skills)
33
+ Multi-agent consultation, reverse engineering, project recovery.
34
+ check-implementation-readiness Ā· correct-course Ā· clone-website
35
+ document-project Ā· generate-project-context Ā· research
36
+ Agents: Majlis Ā· Raees Ā· Diwan Ā· Zayd Ā· Omar Ā· Mariam Ā· Noor
37
+ Power tools: dashboard Ā· digest Ā· github-sync Ā· context --refresh
38
+
39
+ šŸ“ STANDARDS — Contributors
40
+ 5-component skill spec, commit rules, PR checklist.
41
+ See: docs/STANDARDS.md
42
+
43
+ 🧪 PREVIEW — v2
44
+ Next-gen methodology (36 agents, 67 workflows). In development.
45
+ See: docs/V2-PREVIEW.md
46
+
47
+ Full detail: docs/TIERS.md
48
+ `.trim());
49
+ };
@@ -0,0 +1,600 @@
1
+ /**
2
+ * rihal-code uninstall — remove Rihal Code from the current project.
3
+ *
4
+ * Cleanly removes:
5
+ * - .claude/skills/rihal-* (phrase-activated skills)
6
+ * - .claude/commands/rihal/ (slash commands)
7
+ * - .claude/agents/rihal-*.md (v2 subagents: sadiq, waleed, yousef, zayd, etc.)
8
+ * - .cursor/rules/rihal-*.mdc (cursor rules)
9
+ * - .windsurf/rules/rihal-*.mdc (windsurf rules)
10
+ * - .antigravity/agents/rihal-* (antigravity agents)
11
+ * - Rihal Code section in AGENTS.md (appended section only — file preserved)
12
+ * - .rihal/ (ONLY if user explicitly confirms — contains project state)
13
+ *
14
+ * Default: interactive preview → confirmation → delete.
15
+ *
16
+ * Flags:
17
+ * --editor=claude|cursor|windsurf|antigravity|all Limit scope
18
+ * --keep-state Never touch .rihal/
19
+ * --delete-state Also delete .rihal/ (skip prompt)
20
+ * --yes / -y Skip the main confirmation
21
+ */
22
+
23
+ const fs = require('fs');
24
+ const path = require('path');
25
+ const { spawnSync } = require('child_process');
26
+ const { askConfirm, PromptAbortError } = require('./lib/prompts.cjs');
27
+ const { writeFileAtomic } = require('./lib/fsutil.cjs');
28
+
29
+ function parseArgs(args) {
30
+ const opts = {
31
+ editor: null, // null = all
32
+ keepState: false, // if true, never delete .rihal/
33
+ deleteState: false, // if true, delete .rihal/ without prompting
34
+ yes: false, // skip the main confirmation
35
+ };
36
+ for (const arg of args) {
37
+ if (arg.startsWith('--editor=')) {
38
+ opts.editor = arg.slice('--editor='.length);
39
+ } else if (arg === '--keep-state') {
40
+ opts.keepState = true;
41
+ } else if (arg === '--delete-state') {
42
+ opts.deleteState = true;
43
+ } else if (arg === '--yes' || arg === '-y') {
44
+ opts.yes = true;
45
+ }
46
+ }
47
+ return opts;
48
+ }
49
+
50
+ /**
51
+ * Walk a directory and remove all files/subdirs whose name matches a predicate.
52
+ * Returns the number of entries removed.
53
+ */
54
+ function removeMatching(dir, predicate) {
55
+ if (!fs.existsSync(dir)) return 0;
56
+ let count = 0;
57
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
58
+ if (!predicate(entry.name)) continue;
59
+ const full = path.join(dir, entry.name);
60
+ fs.rmSync(full, { recursive: true, force: true });
61
+ count++;
62
+ }
63
+ return count;
64
+ }
65
+
66
+ /**
67
+ * Remove a directory only if it is completely empty. Safe — will never
68
+ * delete user content. Returns true if removed.
69
+ */
70
+ function rmdirIfEmpty(dir) {
71
+ if (!fs.existsSync(dir)) return false;
72
+ try {
73
+ if (fs.readdirSync(dir).length === 0) {
74
+ fs.rmdirSync(dir);
75
+ return true;
76
+ }
77
+ } catch {
78
+ // ignore — could be a file, permission error, etc.
79
+ }
80
+ return false;
81
+ }
82
+
83
+ /**
84
+ * Cascade `rmdirIfEmpty` upward through a list of paths.
85
+ * Order matters: pass innermost first so each parent has a chance to
86
+ * become empty after its child is removed.
87
+ *
88
+ * Never touches `.rihal/` — that's managed separately by the state
89
+ * preservation flow.
90
+ */
91
+ function cleanupEmptyDirs(cwd, relPaths) {
92
+ for (const rel of relPaths) {
93
+ rmdirIfEmpty(path.join(cwd, rel));
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Build the plan of what would be removed, without actually removing anything.
99
+ * Returns an object with per-editor counts and a list of absolute paths.
100
+ */
101
+ function buildPlan(cwd, editors) {
102
+ const plan = {
103
+ claude: { skills: [], commands: [], agents: [] },
104
+ cursor: [],
105
+ windsurf: [],
106
+ antigravity: [],
107
+ agentsMd: null, // null = no section; 'present' = section present
108
+ stateDir: null, // null = missing; { files: N } = present
109
+ planningDir: null, // null = missing; { files: N } = present
110
+ };
111
+
112
+ if (editors.includes('claude')) {
113
+ const skillsDir = path.join(cwd, '.claude/skills');
114
+ if (fs.existsSync(skillsDir)) {
115
+ plan.claude.skills = fs
116
+ .readdirSync(skillsDir)
117
+ .filter((name) => name.startsWith('rihal-') || isKnownSkillName(name));
118
+ }
119
+ const commandsDir = path.join(cwd, '.claude/commands/rihal');
120
+ if (fs.existsSync(commandsDir)) {
121
+ plan.claude.commands = fs.readdirSync(commandsDir);
122
+ }
123
+ // v2 installs agents to .claude/agents/rihal-*.md — scan for them
124
+ const agentsDir = path.join(cwd, '.claude/agents');
125
+ if (fs.existsSync(agentsDir)) {
126
+ plan.claude.agents = fs
127
+ .readdirSync(agentsDir)
128
+ .filter((name) => name.startsWith('rihal-') && name.endsWith('.md'));
129
+ }
130
+ }
131
+
132
+ if (editors.includes('cursor')) {
133
+ const cursorDir = path.join(cwd, '.cursor/rules');
134
+ if (fs.existsSync(cursorDir)) {
135
+ plan.cursor = fs
136
+ .readdirSync(cursorDir)
137
+ .filter((name) => name.startsWith('rihal-') || name === 'rihal-code.mdc' || name === 'rihal-method.mdc');
138
+ }
139
+ }
140
+
141
+ if (editors.includes('windsurf')) {
142
+ const windsurfDir = path.join(cwd, '.windsurf/rules');
143
+ if (fs.existsSync(windsurfDir)) {
144
+ plan.windsurf = fs
145
+ .readdirSync(windsurfDir)
146
+ .filter((name) => name.startsWith('rihal-') || name === 'rihal-code.mdc' || name === 'rihal-method.mdc');
147
+ }
148
+ }
149
+
150
+ if (editors.includes('antigravity')) {
151
+ const agDir = path.join(cwd, '.antigravity/agents');
152
+ if (fs.existsSync(agDir)) {
153
+ plan.antigravity = fs
154
+ .readdirSync(agDir)
155
+ .filter((name) => name.startsWith('rihal-'));
156
+ }
157
+ }
158
+
159
+ // Check AGENTS.md for Rihal section
160
+ const agentsMdPath = path.join(cwd, 'AGENTS.md');
161
+ if (fs.existsSync(agentsMdPath)) {
162
+ const content = fs.readFileSync(agentsMdPath, 'utf8');
163
+ if (content.includes('## Rihal Code Agents (installed)') || content.includes('## Rihal Method Agents (installed)')) {
164
+ plan.agentsMd = 'present';
165
+ }
166
+ }
167
+
168
+ // Check .rihal/ state directory
169
+ const rihalDir = path.join(cwd, '.rihal');
170
+ if (fs.existsSync(rihalDir)) {
171
+ let fileCount = 0;
172
+ function countFiles(dir) {
173
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
174
+ if (entry.isDirectory()) countFiles(path.join(dir, entry.name));
175
+ else fileCount++;
176
+ }
177
+ }
178
+ try { countFiles(rihalDir); } catch {}
179
+ plan.stateDir = { files: fileCount };
180
+ }
181
+
182
+ return plan;
183
+ }
184
+
185
+ /**
186
+ * List of action-skill names the installer places in .claude/skills/.
187
+ * These do NOT start with `rihal-` (e.g., `rihal-domain-research` does, but
188
+ * for safety we also keep a known list).
189
+ */
190
+ const KNOWN_ACTION_SKILLS = [
191
+ 'rihal-check-implementation-readiness',
192
+ 'rihal-code-review',
193
+ 'rihal-correct-course',
194
+ 'rihal-create-architecture',
195
+ 'rihal-create-epics-and-stories',
196
+ 'rihal-create-prd',
197
+ 'rihal-create-story',
198
+ 'rihal-create-ux-design',
199
+ 'rihal-dev-story',
200
+ 'rihal-document-project',
201
+ 'rihal-domain-research',
202
+ 'rihal-edit-prd',
203
+ 'rihal-frontend-design',
204
+ 'rihal-generate-project-context',
205
+ 'rihal-market-research',
206
+ 'rihal-product-brief',
207
+ 'rihal-qa-generate-e2e-tests',
208
+ 'rihal-retrospective',
209
+ 'rihal-sprint-planning',
210
+ 'rihal-sprint-status',
211
+ 'rihal-technical-research',
212
+ 'rihal-validate-prd',
213
+ 'rihal-clone-website',
214
+ ];
215
+
216
+ function isKnownSkillName(name) {
217
+ return KNOWN_ACTION_SKILLS.includes(name);
218
+ }
219
+
220
+ /**
221
+ * Build the list of files/dirs (relative to cwd) that the uninstall plan
222
+ * will delete or mutate. Used to feed `tar --files-from=-`.
223
+ */
224
+ function planToPathList(plan, cwd) {
225
+ const paths = [];
226
+
227
+ for (const name of plan.claude.skills) {
228
+ paths.push(path.join('.claude/skills', name));
229
+ }
230
+ if (plan.claude.commands.length > 0) {
231
+ paths.push('.claude/commands/rihal');
232
+ }
233
+ for (const name of plan.claude.agents) {
234
+ paths.push(path.join('.claude/agents', name));
235
+ }
236
+ for (const name of plan.cursor) {
237
+ paths.push(path.join('.cursor/rules', name));
238
+ }
239
+ for (const name of plan.windsurf) {
240
+ paths.push(path.join('.windsurf/rules', name));
241
+ }
242
+ for (const name of plan.antigravity) {
243
+ paths.push(path.join('.antigravity/agents', name));
244
+ }
245
+ // AGENTS.md is mutated (stripped), not deleted — but we back it up so the
246
+ // user can restore the stripped content.
247
+ if (plan.agentsMd && fs.existsSync(path.join(cwd, 'AGENTS.md'))) {
248
+ paths.push('AGENTS.md');
249
+ }
250
+
251
+ return paths;
252
+ }
253
+
254
+ /**
255
+ * Create a timestamped tar.gz backup of all files the uninstall will touch.
256
+ *
257
+ * Returns { ok, path, warning } — ok=false means we couldn't write a backup
258
+ * (tar missing, no paths, etc.); the caller should warn the user but may
259
+ * still proceed since the user already confirmed the destructive action.
260
+ */
261
+ function createBackup(cwd, plan) {
262
+ const paths = planToPathList(plan, cwd);
263
+ if (paths.length === 0) {
264
+ return { ok: false, warning: 'nothing to back up' };
265
+ }
266
+
267
+ // tar must exist. On Linux/macOS it's always available; Windows without
268
+ // WSL may not have it — warn and skip there.
269
+ const tarCheck = spawnSync('tar', ['--version'], { stdio: 'ignore' });
270
+ if (tarCheck.status !== 0) {
271
+ return { ok: false, warning: 'tar not available on this system' };
272
+ }
273
+
274
+ const backupsDir = path.join(cwd, '.rihal/backups');
275
+ try {
276
+ fs.mkdirSync(backupsDir, { recursive: true });
277
+ } catch (err) {
278
+ return { ok: false, warning: `could not create .rihal/backups/: ${err.message}` };
279
+ }
280
+
281
+ const ts = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
282
+ const backupFile = path.join(backupsDir, `uninstall-${ts}.tgz`);
283
+ const backupRel = path.relative(cwd, backupFile);
284
+
285
+ // Feed file list via stdin; tar -T - reads NUL or newline-separated paths.
286
+ // We pass them newline-separated and use --files-from=- (GNU tar) which is
287
+ // equivalent to -T -.
288
+ const result = spawnSync(
289
+ 'tar',
290
+ ['-czf', backupFile, '-C', cwd, '--files-from=-'],
291
+ {
292
+ input: paths.join('\n') + '\n',
293
+ encoding: 'utf8',
294
+ }
295
+ );
296
+
297
+ if (result.status !== 0) {
298
+ return {
299
+ ok: false,
300
+ warning: `tar exited ${result.status}: ${(result.stderr || '').trim()}`,
301
+ };
302
+ }
303
+
304
+ return { ok: true, path: backupRel };
305
+ }
306
+
307
+ /**
308
+ * Remove the Rihal Code section from AGENTS.md without deleting the whole file.
309
+ * The section starts with `## Rihal Code Agents (installed)` or the older
310
+ * `## Rihal Method Agents (installed)` header and ends at either EOF or the
311
+ * next `## ` top-level heading.
312
+ */
313
+ function stripRihalFromAgentsMd(agentsMdPath) {
314
+ if (!fs.existsSync(agentsMdPath)) return false;
315
+ let content = fs.readFileSync(agentsMdPath, 'utf8');
316
+ let changed = false;
317
+
318
+ // Match the Rihal section and everything until the next `## ` or EOF
319
+ const patterns = [
320
+ /\n*---\n+## Rihal Code Agents \(installed\)[\s\S]*?(?=\n## |\n*$)/,
321
+ /\n*---\n+## Rihal Method Agents \(installed\)[\s\S]*?(?=\n## |\n*$)/,
322
+ /\n*## Rihal Code Agents \(installed\)[\s\S]*?(?=\n## |\n*$)/,
323
+ /\n*## Rihal Method Agents \(installed\)[\s\S]*?(?=\n## |\n*$)/,
324
+ ];
325
+
326
+ for (const pattern of patterns) {
327
+ if (pattern.test(content)) {
328
+ content = content.replace(pattern, '');
329
+ changed = true;
330
+ }
331
+ }
332
+
333
+ if (changed) {
334
+ // Clean up any trailing `---` that's now alone
335
+ content = content.replace(/\n---\n+$/, '\n');
336
+ // Atomic so a Ctrl+C mid-strip can't truncate the user's AGENTS.md.
337
+ writeFileAtomic(agentsMdPath, content);
338
+ }
339
+ return changed;
340
+ }
341
+
342
+ module.exports = async function uninstall(args) {
343
+ try {
344
+ return await runUninstall(args);
345
+ } catch (err) {
346
+ if (err instanceof PromptAbortError) {
347
+ console.log(`\nāŒ Uninstall cancelled — ${err.message}.`);
348
+ process.exit(0);
349
+ }
350
+ throw err;
351
+ }
352
+ };
353
+
354
+ async function runUninstall(args) {
355
+ const opts = parseArgs(args);
356
+ const cwd = process.cwd();
357
+
358
+ const editors = opts.editor
359
+ ? (opts.editor === 'all' ? ['claude', 'cursor', 'windsurf', 'antigravity'] : [opts.editor])
360
+ : ['claude', 'cursor', 'windsurf', 'antigravity'];
361
+
362
+ console.log(`\nšŸ•Œ Rihal Code — Uninstall\n`);
363
+ console.log(` Project: ${cwd}`);
364
+ console.log(` Scope: ${editors.join(', ')}`);
365
+ console.log();
366
+
367
+ // Fast path: is Rihal Code installed here at all? Check our own marker
368
+ // (.rihal/config.json) + any editor install trace. If nothing, exit cleanly
369
+ // with a clear message so users don't wonder "did it work?"
370
+ const hasConfig = fs.existsSync(path.join(cwd, '.rihal/config.json'));
371
+ const hasAnyEditorFiles =
372
+ fs.existsSync(path.join(cwd, '.claude/skills')) ||
373
+ fs.existsSync(path.join(cwd, '.cursor/rules')) ||
374
+ fs.existsSync(path.join(cwd, '.windsurf/rules')) ||
375
+ fs.existsSync(path.join(cwd, '.antigravity/agents'));
376
+ if (!hasConfig && !hasAnyEditorFiles) {
377
+ console.log(`\nāŒ Rihal Code is not installed in this directory.`);
378
+ console.log(` Nothing to uninstall.`);
379
+ console.log();
380
+ console.log(` To install: npx --yes github:hanzlahabib/rihal-code install`);
381
+ console.log();
382
+ return;
383
+ }
384
+
385
+ // Build the plan
386
+ const plan = buildPlan(cwd, editors);
387
+
388
+ const totalSkills = plan.claude.skills.length;
389
+ const totalCommands = plan.claude.commands.length;
390
+ const totalCursor = plan.cursor.length;
391
+ const totalWindsurf = plan.windsurf.length;
392
+ const totalAG = plan.antigravity.length;
393
+ const totalAgents = plan.claude.agents.length;
394
+ const totalItems = totalSkills + totalCommands + totalAgents + totalCursor + totalWindsurf + totalAG;
395
+
396
+ // Edge case: install traces exist but no actual files match our patterns
397
+ // (e.g. user manually deleted Rihal files but left dirs). Exit clean.
398
+ if (totalItems === 0 && !plan.agentsMd && !plan.stateDir) {
399
+ console.log(`\nāŒ No Rihal Code files found to remove.`);
400
+ console.log(` The install markers are present but all files have already been deleted.`);
401
+ console.log();
402
+ return;
403
+ }
404
+
405
+ console.log(`What will be removed:\n`);
406
+ if (editors.includes('claude')) {
407
+ console.log(` Claude Code`);
408
+ console.log(` .claude/skills/ (rihal-*): ${totalSkills} skills`);
409
+ console.log(` .claude/commands/rihal/: ${totalCommands} slash commands`);
410
+ console.log(` .claude/agents/rihal-*.md: ${totalAgents} agents`);
411
+ }
412
+ if (editors.includes('cursor')) {
413
+ console.log(` Cursor`);
414
+ console.log(` .cursor/rules/rihal-*.mdc: ${totalCursor} rules`);
415
+ }
416
+ if (editors.includes('windsurf')) {
417
+ console.log(` Windsurf`);
418
+ console.log(` .windsurf/rules/rihal-*.mdc: ${totalWindsurf} rules`);
419
+ }
420
+ if (editors.includes('antigravity')) {
421
+ console.log(` Antigravity`);
422
+ console.log(` .antigravity/agents/rihal-*: ${totalAG} agents`);
423
+ }
424
+ if (plan.agentsMd) {
425
+ console.log(` AGENTS.md`);
426
+ console.log(` Rihal Code section will be stripped (file preserved)`);
427
+ }
428
+ if (plan.stateDir) {
429
+ console.log();
430
+ console.log(`āš ļø .rihal/ state directory detected`);
431
+ console.log(` Contains ${plan.stateDir.files} files (phases, decisions, progress, artifacts)`);
432
+ console.log(` This is YOUR PROJECT DATA — not the skill files.`);
433
+ if (opts.deleteState) {
434
+ console.log(` → Will be DELETED (--delete-state flag)`);
435
+ } else if (opts.keepState) {
436
+ console.log(` → Will be KEPT (--keep-state flag)`);
437
+ } else {
438
+ console.log(` → Will ask separately after the main confirmation.`);
439
+ }
440
+ }
441
+ console.log();
442
+
443
+ // Main confirmation (skills + commands + rules + AGENTS.md section)
444
+ if (!opts.yes) {
445
+ const proceed = await askConfirm(
446
+ `Proceed with removing ${totalItems} skill/command files${plan.agentsMd ? ' + AGENTS.md section' : ''}? [y/N] `,
447
+ { default: 'n' },
448
+ );
449
+ if (!proceed) {
450
+ console.log(`\nāŒ Aborted. Nothing was removed.`);
451
+ return;
452
+ }
453
+ }
454
+
455
+ // Create a timestamped backup before doing anything destructive.
456
+ // Non-fatal on failure — the user already confirmed, we just warn.
457
+ console.log();
458
+ const backup = createBackup(cwd, plan);
459
+ if (backup.ok) {
460
+ console.log(` šŸ’¾ backup created: ${backup.path}`);
461
+ } else {
462
+ console.log(` ⚠ no backup created (${backup.warning}) — continuing anyway`);
463
+ }
464
+
465
+ // Execute removal
466
+ console.log();
467
+ let removed = 0;
468
+
469
+ if (editors.includes('claude')) {
470
+ const skillsDir = path.join(cwd, '.claude/skills');
471
+ const n = removeMatching(skillsDir, (name) => name.startsWith('rihal-') || isKnownSkillName(name));
472
+ removed += n;
473
+ if (n > 0) console.log(` āœ“ removed ${n} Claude skills`);
474
+
475
+ const commandsDir = path.join(cwd, '.claude/commands/rihal');
476
+ if (fs.existsSync(commandsDir)) {
477
+ fs.rmSync(commandsDir, { recursive: true, force: true });
478
+ removed += plan.claude.commands.length;
479
+ console.log(` āœ“ removed .claude/commands/rihal/ (${plan.claude.commands.length} slash commands)`);
480
+ }
481
+
482
+ // v2: .claude/agents/rihal-*.md
483
+ const agentsDir = path.join(cwd, '.claude/agents');
484
+ const nAgents = removeMatching(agentsDir, (name) =>
485
+ name.startsWith('rihal-') && name.endsWith('.md'),
486
+ );
487
+ removed += nAgents;
488
+ if (nAgents > 0) console.log(` āœ“ removed ${nAgents} Claude agents`);
489
+
490
+ // Clean up now-empty .claude/commands and .claude/agents dirs
491
+ try {
492
+ if (fs.existsSync(path.join(cwd, '.claude/commands')) && fs.readdirSync(path.join(cwd, '.claude/commands')).length === 0) {
493
+ fs.rmdirSync(path.join(cwd, '.claude/commands'));
494
+ }
495
+ if (fs.existsSync(agentsDir) && fs.readdirSync(agentsDir).length === 0) {
496
+ fs.rmdirSync(agentsDir);
497
+ }
498
+ } catch { /* best effort */ }
499
+ }
500
+
501
+ if (editors.includes('cursor')) {
502
+ const cursorDir = path.join(cwd, '.cursor/rules');
503
+ const n = removeMatching(cursorDir, (name) =>
504
+ name.startsWith('rihal-') || name === 'rihal-code.mdc' || name === 'rihal-method.mdc',
505
+ );
506
+ removed += n;
507
+ if (n > 0) console.log(` āœ“ removed ${n} Cursor rules`);
508
+ }
509
+
510
+ if (editors.includes('windsurf')) {
511
+ const windsurfDir = path.join(cwd, '.windsurf/rules');
512
+ const n = removeMatching(windsurfDir, (name) =>
513
+ name.startsWith('rihal-') || name === 'rihal-code.mdc' || name === 'rihal-method.mdc',
514
+ );
515
+ removed += n;
516
+ if (n > 0) console.log(` āœ“ removed ${n} Windsurf rules`);
517
+ }
518
+
519
+ if (editors.includes('antigravity')) {
520
+ const agDir = path.join(cwd, '.antigravity/agents');
521
+ const n = removeMatching(agDir, (name) => name.startsWith('rihal-'));
522
+ removed += n;
523
+ if (n > 0) console.log(` āœ“ removed ${n} Antigravity agents`);
524
+ }
525
+
526
+ // Strip AGENTS.md section
527
+ if (plan.agentsMd) {
528
+ const agentsMdPath = path.join(cwd, 'AGENTS.md');
529
+ const stripped = stripRihalFromAgentsMd(agentsMdPath);
530
+ if (stripped) {
531
+ console.log(` āœ“ stripped Rihal Code section from AGENTS.md`);
532
+ }
533
+ }
534
+
535
+ // Cleanup empty editor directories left behind after removing rihal-*
536
+ // entries. Only removes dirs that are COMPLETELY empty — never touches
537
+ // user content. Order matters: innermost first so each parent gets a
538
+ // chance to become empty after its child is removed.
539
+ // Not touching .rihal/ — that's handled by the state preservation flow.
540
+ cleanupEmptyDirs(cwd, [
541
+ '.claude/skills',
542
+ '.claude/commands',
543
+ '.claude',
544
+ '.cursor/rules',
545
+ '.cursor',
546
+ '.windsurf/rules',
547
+ '.windsurf',
548
+ '.antigravity/agents',
549
+ '.antigravity',
550
+ ]);
551
+
552
+ // Handle .rihal/ state directory
553
+ if (plan.stateDir) {
554
+ const rihalDir = path.join(cwd, '.rihal');
555
+ let shouldDeleteState = opts.deleteState;
556
+
557
+ if (!opts.deleteState && !opts.keepState && !opts.yes) {
558
+ console.log();
559
+ console.log(`āš ļø The .rihal/ state directory contains your project data:`);
560
+ console.log(` - phases, decisions, progress, artifacts, context`);
561
+ console.log(` - ${plan.stateDir.files} files total`);
562
+ console.log();
563
+ shouldDeleteState = await askConfirm(
564
+ `Also delete .rihal/ state? This is destructive and cannot be undone. [y/N] `,
565
+ { default: 'n' },
566
+ );
567
+ }
568
+
569
+ if (shouldDeleteState) {
570
+ fs.rmSync(rihalDir, { recursive: true, force: true });
571
+ console.log(` āœ“ removed .rihal/ state directory`);
572
+ } else {
573
+ console.log(` ℹ kept .rihal/ state directory (your project data is preserved)`);
574
+ }
575
+ }
576
+
577
+ console.log(`\nāœ… Uninstall complete. Removed ${removed} files.`);
578
+ if (backup.ok) {
579
+ console.log(` Backup: ${backup.path} (restore with: tar -xzf ${backup.path})`);
580
+ }
581
+
582
+ // Hint about reinstalling
583
+ console.log(`\nTo reinstall later:`);
584
+ console.log(` npx --yes github:hanzlahabib/rihal-code install`);
585
+ }
586
+
587
+ // Direct invocation — allow `node cli/uninstall.js [flags]` to run end-to-end.
588
+ // When called via cli/index.js, module.exports is invoked directly.
589
+ if (require.main === module) {
590
+ module.exports(process.argv.slice(2))
591
+ .catch((err) => {
592
+ if (err instanceof PromptAbortError) {
593
+ console.log('\nāŒ Aborted.');
594
+ process.exit(1);
595
+ }
596
+ console.error(`\nāŒ Uninstall failed: ${err.message}`);
597
+ if (process.env.DEBUG) console.error(err.stack);
598
+ process.exit(1);
599
+ });
600
+ }