@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.
- package/AGENTS.md +120 -0
- package/CLAUDE.md +120 -0
- package/CONTRIBUTING.md +298 -0
- package/README.md +436 -0
- package/cli/config.js +142 -0
- package/cli/context.js +213 -0
- package/cli/dashboard.js +38 -0
- package/cli/digest.js +66 -0
- package/cli/doctor.js +283 -0
- package/cli/github-sync.js +1016 -0
- package/cli/index.js +113 -0
- package/cli/install.js +946 -0
- package/cli/lib/config.cjs +334 -0
- package/cli/lib/fsutil.cjs +76 -0
- package/cli/lib/github.cjs +365 -0
- package/cli/lib/manifest.cjs +240 -0
- package/cli/lib/memory-bank.cjs +348 -0
- package/cli/lib/model-profiles.cjs +169 -0
- package/cli/lib/prompts.cjs +355 -0
- package/cli/postinstall.js +32 -0
- package/cli/set-mode.js +94 -0
- package/cli/set-profile.js +80 -0
- package/cli/show-model.js +82 -0
- package/cli/team.js +35 -0
- package/cli/tiers.js +49 -0
- package/cli/uninstall.js +600 -0
- package/cli/update.js +373 -0
- package/package.json +60 -0
- package/rihal/agents/rihal-advisor-researcher.md +116 -0
- package/rihal/agents/rihal-ahmed.md +66 -0
- package/rihal/agents/rihal-architect.md +79 -0
- package/rihal/agents/rihal-assumptions-analyzer.md +117 -0
- package/rihal/agents/rihal-code-fixer.md +74 -0
- package/rihal/agents/rihal-code-reviewer.md +75 -0
- package/rihal/agents/rihal-codebase-mapper.md +170 -0
- package/rihal/agents/rihal-debugger.md +140 -0
- package/rihal/agents/rihal-deviation-analyzer.md +74 -0
- package/rihal/agents/rihal-docs-auditor.md +77 -0
- package/rihal/agents/rihal-edge-case-hunter.md +75 -0
- package/rihal/agents/rihal-executor.md +113 -0
- package/rihal/agents/rihal-fatima.md +68 -0
- package/rihal/agents/rihal-haitham.md +75 -0
- package/rihal/agents/rihal-hanzla.md +59 -0
- package/rihal/agents/rihal-hussain-pm.md +82 -0
- package/rihal/agents/rihal-integration-checker.md +455 -0
- package/rihal/agents/rihal-khalid.md +59 -0
- package/rihal/agents/rihal-layla.md +57 -0
- package/rihal/agents/rihal-mariam.md +58 -0
- package/rihal/agents/rihal-nasser.md +57 -0
- package/rihal/agents/rihal-noor.md +60 -0
- package/rihal/agents/rihal-nyquist-auditor.md +182 -0
- package/rihal/agents/rihal-omar.md +57 -0
- package/rihal/agents/rihal-phase-researcher.md +84 -0
- package/rihal/agents/rihal-planner.md +176 -0
- package/rihal/agents/rihal-profiler.md +74 -0
- package/rihal/agents/rihal-project-researcher.md +80 -0
- package/rihal/agents/rihal-remediation-planner.md +78 -0
- package/rihal/agents/rihal-research-synthesizer.md +253 -0
- package/rihal/agents/rihal-roadmapper.md +73 -0
- package/rihal/agents/rihal-sadiq.md +72 -0
- package/rihal/agents/rihal-security-adversary.md +82 -0
- package/rihal/agents/rihal-security-auditor.md +78 -0
- package/rihal/agents/rihal-sprint-checker.md +124 -0
- package/rihal/agents/rihal-tech-writer.md +80 -0
- package/rihal/agents/rihal-ui-auditor.md +81 -0
- package/rihal/agents/rihal-ui-designer.md +6 -0
- package/rihal/agents/rihal-ux-designer.md +83 -0
- package/rihal/agents/rihal-verifier.md +124 -0
- package/rihal/agents/rihal-waleed.md +60 -0
- package/rihal/agents/rihal-yousef.md +78 -0
- package/rihal/agents/rihal-zahra.md +62 -0
- package/rihal/agents/rihal-zayd.md +78 -0
- package/rihal/agents/rules/codebase-mapper/detailed-guide.md +615 -0
- package/rihal/agents/rules/debugger/checkpoint-recovery.md +272 -0
- package/rihal/agents/rules/debugger/debug-session-state.md +261 -0
- package/rihal/agents/rules/debugger/hypothesis-templates.md +330 -0
- package/rihal/agents/rules/debugger/investigation-protocol.md +298 -0
- package/rihal/agents/rules/debugger/scientific-method.md +317 -0
- package/rihal/agents/rules/executor/authentication-gates.md +202 -0
- package/rihal/agents/rules/executor/deviation-rules.md +191 -0
- package/rihal/agents/rules/executor/execution-flow.md +116 -0
- package/rihal/agents/rules/executor/self-check.md +241 -0
- package/rihal/agents/rules/executor/stub-detection.md +267 -0
- package/rihal/agents/rules/executor/summary-creation.md +76 -0
- package/rihal/agents/rules/executor/task-commit-protocol.md +283 -0
- package/rihal/agents/rules/executor/tdd-flow.md +294 -0
- package/rihal/agents/rules/phase-researcher/detailed-guide.md +628 -0
- package/rihal/agents/rules/planner/common-patterns.md +373 -0
- package/rihal/agents/rules/planner/dependency-analysis.md +195 -0
- package/rihal/agents/rules/planner/goal-backward-thinking.md +220 -0
- package/rihal/agents/rules/planner/sprint-verification.md +202 -0
- package/rihal/agents/rules/planner/task-templates.md +296 -0
- package/rihal/agents/rules/project-researcher/detailed-guide.md +589 -0
- package/rihal/agents/rules/roadmapper/detailed-guide.md +620 -0
- package/rihal/agents/rules/sprint-checker/dimensions.md +414 -0
- package/rihal/agents/rules/sprint-checker/process.md +377 -0
- package/rihal/agents/rules/verifier/anti-patterns.md +94 -0
- package/rihal/agents/rules/verifier/artifact-verification.md +69 -0
- package/rihal/agents/rules/verifier/behavioral-spot-checks.md +49 -0
- package/rihal/agents/rules/verifier/context-loading.md +84 -0
- package/rihal/agents/rules/verifier/data-flow-trace.md +65 -0
- package/rihal/agents/rules/verifier/gap-output.md +51 -0
- package/rihal/agents/rules/verifier/key-links.md +56 -0
- package/rihal/agents/rules/verifier/requirements-coverage.md +28 -0
- package/rihal/agents/rules/verifier/verification-report.md +131 -0
- package/rihal/bin/lib/code-references.cjs +196 -0
- package/rihal/bin/lib/config.cjs +146 -0
- package/rihal/bin/lib/council-panel.cjs +501 -0
- package/rihal/bin/lib/roadmap.cjs +256 -0
- package/rihal/bin/lib/verify.cjs +118 -0
- package/rihal/bin/rihal-hooks.cjs +204 -0
- package/rihal/bin/rihal-tools.cjs +3554 -0
- package/rihal/brain/README.md +38 -0
- package/rihal/brain/best-practices/no-autonomous-bypass.md +37 -0
- package/rihal/brain/best-practices/research-citation-rule.md +39 -0
- package/rihal/brain/best-practices/state-sync-rule.md +43 -0
- package/rihal/brain/sources.yaml +59 -0
- package/rihal/commands/add-phase.md +18 -0
- package/rihal/commands/add-tests.md +18 -0
- package/rihal/commands/add-todo.md +8 -0
- package/rihal/commands/analyze-dependencies.md +11 -0
- package/rihal/commands/audit-fix.md +14 -0
- package/rihal/commands/audit-milestone.md +12 -0
- package/rihal/commands/audit-uat.md +18 -0
- package/rihal/commands/autonomous.md +19 -0
- package/rihal/commands/brainstorm.md +11 -0
- package/rihal/commands/chain.md +8 -0
- package/rihal/commands/check-implementation-readiness.md +8 -0
- package/rihal/commands/check-todos.md +18 -0
- package/rihal/commands/cleanup.md +18 -0
- package/rihal/commands/code-review-fix.md +14 -0
- package/rihal/commands/code-review.md +14 -0
- package/rihal/commands/complete-milestone.md +12 -0
- package/rihal/commands/config.md +8 -0
- package/rihal/commands/correct-course.md +8 -0
- package/rihal/commands/council.md +25 -0
- package/rihal/commands/create-epics-and-stories.md +8 -0
- package/rihal/commands/create-story.md +8 -0
- package/rihal/commands/dashboard.md +10 -0
- package/rihal/commands/debug.md +8 -0
- package/rihal/commands/decisions.md +10 -0
- package/rihal/commands/dev-story.md +8 -0
- package/rihal/commands/diff.md +10 -0
- package/rihal/commands/discuss-phase-power.md +11 -0
- package/rihal/commands/discuss-phase.md +19 -0
- package/rihal/commands/discuss.md +23 -0
- package/rihal/commands/do.md +22 -0
- package/rihal/commands/docs-update.md +14 -0
- package/rihal/commands/document-project.md +8 -0
- package/rihal/commands/enable-hooks.md +11 -0
- package/rihal/commands/execute-sprint.md +13 -0
- package/rihal/commands/execute.md +19 -0
- package/rihal/commands/explore.md +14 -0
- package/rihal/commands/export-to-github.md +11 -0
- package/rihal/commands/forensics.md +11 -0
- package/rihal/commands/from-template.md +11 -0
- package/rihal/commands/health.md +10 -0
- package/rihal/commands/help.md +8 -0
- package/rihal/commands/import.md +12 -0
- package/rihal/commands/inbox.md +12 -0
- package/rihal/commands/init.md +14 -0
- package/rihal/commands/insert-phase.md +11 -0
- package/rihal/commands/install.md +10 -0
- package/rihal/commands/karpathy-audit.md +12 -0
- package/rihal/commands/list-plans.md +11 -0
- package/rihal/commands/list-workspaces.md +10 -0
- package/rihal/commands/map-codebase.md +14 -0
- package/rihal/commands/milestone-summary.md +11 -0
- package/rihal/commands/new-milestone.md +12 -0
- package/rihal/commands/new-project-research.md +11 -0
- package/rihal/commands/new-project-roadmap.md +11 -0
- package/rihal/commands/new-project.md +13 -0
- package/rihal/commands/new-workspace.md +12 -0
- package/rihal/commands/next.md +19 -0
- package/rihal/commands/note.md +12 -0
- package/rihal/commands/notify-test.md +10 -0
- package/rihal/commands/pause-work.md +8 -0
- package/rihal/commands/plan-milestone-gaps.md +18 -0
- package/rihal/commands/plan.md +19 -0
- package/rihal/commands/plant-seed.md +18 -0
- package/rihal/commands/pr-branch.md +18 -0
- package/rihal/commands/profile-user.md +8 -0
- package/rihal/commands/progress.md +19 -0
- package/rihal/commands/quick.md +14 -0
- package/rihal/commands/remove-phase.md +18 -0
- package/rihal/commands/remove-workspace.md +11 -0
- package/rihal/commands/replay.md +11 -0
- package/rihal/commands/report.md +10 -0
- package/rihal/commands/rerun.md +11 -0
- package/rihal/commands/research-phase.md +18 -0
- package/rihal/commands/resume-work.md +8 -0
- package/rihal/commands/review-adversarial.md +8 -0
- package/rihal/commands/review-edge-case-hunter.md +8 -0
- package/rihal/commands/review.md +18 -0
- package/rihal/commands/scan.md +14 -0
- package/rihal/commands/secure-phase.md +14 -0
- package/rihal/commands/session-report.md +10 -0
- package/rihal/commands/settings.md +8 -0
- package/rihal/commands/ship.md +18 -0
- package/rihal/commands/show.md +10 -0
- package/rihal/commands/sprint-planning.md +20 -0
- package/rihal/commands/sprint-status.md +21 -0
- package/rihal/commands/stats.md +10 -0
- package/rihal/commands/status.md +21 -0
- package/rihal/commands/ui-phase.md +8 -0
- package/rihal/commands/ui-review.md +8 -0
- package/rihal/commands/undo.md +14 -0
- package/rihal/commands/update.md +11 -0
- package/rihal/commands/validate-phase.md +18 -0
- package/rihal/commands/verify-phase.md +18 -0
- package/rihal/commands/verify-work.md +19 -0
- package/rihal/commands/why.md +10 -0
- package/rihal/commands/workstream.md +11 -0
- package/rihal/config/model-profiles.json +226 -0
- package/rihal/config/model-profiles.schema.json +36 -0
- package/rihal/config.yaml +39 -0
- package/rihal/digests/README.md +50 -0
- package/rihal/digests/fatima.md +24 -0
- package/rihal/digests/hussain-pm.md +24 -0
- package/rihal/digests/mariam.md +24 -0
- package/rihal/digests/sadiq.md +24 -0
- package/rihal/digests/waleed.md +24 -0
- package/rihal/modules/core.yaml +101 -0
- package/rihal/modules/discovery.yaml +50 -0
- package/rihal/modules/execution.yaml +66 -0
- package/rihal/references/brain-methods.csv +9 -0
- package/rihal/references/checklist-architect.md +146 -0
- package/rihal/references/checklist-change.md +136 -0
- package/rihal/references/checklist-pm.md +154 -0
- package/rihal/references/checklist-po-master.md +100 -0
- package/rihal/references/checklist-story-dod.md +75 -0
- package/rihal/references/checklist-story-draft.md +53 -0
- package/rihal/references/checkpoints-index.md +53 -0
- package/rihal/references/checkpoints.md +778 -0
- package/rihal/references/codebase-grounding.md +76 -0
- package/rihal/references/command-redirect-format.md +62 -0
- package/rihal/references/commit-conventions.md +125 -0
- package/rihal/references/common-bug-patterns-index.md +44 -0
- package/rihal/references/common-bug-patterns.md +621 -0
- package/rihal/references/context-budget.md +104 -0
- package/rihal/references/continuation-format.md +249 -0
- package/rihal/references/council-protocol.md +91 -0
- package/rihal/references/domain-probes.md +213 -0
- package/rihal/references/elicitation-methods.csv +16 -0
- package/rihal/references/execution-protocol.md +155 -0
- package/rihal/references/gate-prompts.md +212 -0
- package/rihal/references/gates.md +127 -0
- package/rihal/references/git-integration.md +159 -0
- package/rihal/references/git-planning-commit.md +185 -0
- package/rihal/references/karpathy-guidelines.md +79 -0
- package/rihal/references/model-profiles.md +90 -0
- package/rihal/references/no-unauthorized-git-ops.md +73 -0
- package/rihal/references/output-format.md +319 -0
- package/rihal/references/output-realism.md +52 -0
- package/rihal/references/project-types.yaml +270 -0
- package/rihal/references/questioning.md +163 -0
- package/rihal/references/response-style.md +81 -0
- package/rihal/references/state-schema.md +366 -0
- package/rihal/references/tdd.md +263 -0
- package/rihal/references/thinking-models-debug.md +126 -0
- package/rihal/references/thinking-models-planning.md +127 -0
- package/rihal/references/ui-brand.md +254 -0
- package/rihal/references/verification-patterns-index.md +76 -0
- package/rihal/references/verification-patterns.md +612 -0
- package/rihal/references/workstream-flag.md +166 -0
- package/rihal/skills/SKILLS_INDEX.md +114 -0
- package/rihal/skills/_shared/no-autonomous-bypass.md +37 -0
- package/rihal/skills/_shared/research-citation-rule.md +39 -0
- package/rihal/skills/_shared/state-sync-rule.md +43 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/SKILL.md +31 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-01-init.md +137 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-05-technical-trends.md +234 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/research.template.md +29 -0
- package/rihal/skills/actions/1-analysis/research/rihal-domain-research/workflow.md +49 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/SKILL.md +30 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/research.template.md +29 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-01-init.md +184 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-02-customer-behavior.md +239 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-04-customer-decisions.md +261 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/steps/step-06-research-completion.md +478 -0
- package/rihal/skills/actions/1-analysis/research/rihal-market-research/workflow.md +49 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/SKILL.md +31 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/research.template.md +29 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-01-init.md +137 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-02-technical-overview.md +239 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
- package/rihal/skills/actions/1-analysis/research/rihal-technical-research/workflow.md +50 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/SKILL.md +30 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/checklist.md +245 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/documentation-requirements.csv +12 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/instructions.md +128 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/templates/deep-dive-template.md +345 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/templates/index-template.md +169 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/templates/project-overview-template.md +103 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/templates/project-scan-report-schema.json +160 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/templates/source-tree-template.md +135 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/workflow.md +27 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/deep-dive-instructions.md +299 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/deep-dive-workflow.md +34 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/full-scan-instructions.md +1107 -0
- package/rihal/skills/actions/1-analysis/rihal-document-project/workflows/full-scan-workflow.md +34 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/SKILL.md +120 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/agents/artifact-analyzer.md +60 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/agents/web-researcher.md +49 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/assets/prfaq-template.md +62 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/references/customer-faq.md +55 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/references/internal-faq.md +51 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/references/press-release.md +60 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/references/verdict.md +79 -0
- package/rihal/skills/actions/1-analysis/rihal-prfaq/rihal-manifest.json +16 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/SKILL.md +112 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/artifact-analyzer.md +60 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/opportunity-reviewer.md +44 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/skeptic-reviewer.md +44 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/agents/web-researcher.md +49 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/contextual-discovery.md +57 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/draft-and-review.md +86 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/finalize.md +75 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/prompts/guided-elicitation.md +70 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/resources/brief-template.md +60 -0
- package/rihal/skills/actions/1-analysis/rihal-product-brief/rihal-manifest.json +17 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/SKILL.md +30 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/templates/epics-template.md +61 -0
- package/rihal/skills/actions/2-plan/rihal-create-epics-and-stories/workflow.md +54 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/SKILL.md +39 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/README.md +30 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-01-init.md +62 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-02-outcomes.md +64 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-03-sequencing.md +65 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-04-windows.md +60 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-05-kill-criteria.md +59 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-06-phase-stubs.md +56 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-07-backlog.md +44 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-08-write-roadmap.md +58 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-09-state-sync.md +62 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/steps/step-10-complete.md +56 -0
- package/rihal/skills/actions/2-plan/rihal-create-milestone/workflow.md +93 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/SKILL.md +40 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/data/domain-complexity.csv +15 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/data/prd-purpose.md +197 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/data/project-types.csv +11 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-01-init.md +178 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-01b-continue.md +161 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02-discovery.md +208 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02b-vision.md +142 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-02c-executive-summary.md +158 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-03-success.md +214 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-04-journeys.md +201 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-05-domain.md +194 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-06-innovation.md +211 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-07-project-type.md +222 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-08-scoping.md +216 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-09-functional.md +219 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-10-nonfunctional.md +230 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-11-polish.md +221 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/steps-c/step-12-complete.md +115 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/templates/prd-template.md +10 -0
- package/rihal/skills/actions/2-plan/rihal-create-prd/workflow.md +64 -0
- package/rihal/skills/actions/2-plan/rihal-create-story/SKILL.md +31 -0
- package/rihal/skills/actions/2-plan/rihal-create-story/checklist.md +357 -0
- package/rihal/skills/actions/2-plan/rihal-create-story/discover-inputs.md +88 -0
- package/rihal/skills/actions/2-plan/rihal-create-story/template.md +49 -0
- package/rihal/skills/actions/2-plan/rihal-create-story/workflow.md +380 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/SKILL.md +31 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-01-init.md +135 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-01b-continue.md +127 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-02-discovery.md +190 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-03-core-experience.md +217 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-04-emotional-response.md +220 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-05-inspiration.md +235 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-06-design-system.md +253 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-07-defining-experience.md +255 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-08-visual-foundation.md +225 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-09-design-directions.md +225 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-10-user-journeys.md +242 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-11-component-strategy.md +249 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-12-ux-patterns.md +238 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/steps/step-14-complete.md +171 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/ux-design-template.md +13 -0
- package/rihal/skills/actions/2-plan/rihal-create-ux-design/workflow.md +36 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/SKILL.md +30 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-01-discovery.md +242 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-02-review.md +245 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-03-edit.md +250 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/steps-e/step-e-04-complete.md +165 -0
- package/rihal/skills/actions/2-plan/rihal-edit-prd/workflow.md +63 -0
- package/rihal/skills/actions/2-plan/rihal-frontend-design/SKILL.md +169 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/SKILL.md +29 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/data/domain-complexity.csv +15 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/data/prd-purpose.md +197 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/data/project-types.csv +11 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-01-discovery.md +221 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
- package/rihal/skills/actions/2-plan/rihal-validate-prd/workflow.md +62 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/SKILL.md +30 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/rihal/skills/actions/3-solutioning/rihal-check-implementation-readiness/workflow.md +49 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/SKILL.md +32 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/architecture-decision-template.md +12 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/data/domain-complexity.csv +13 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/data/project-types.csv +7 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-01-init.md +153 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-01b-continue.md +173 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-02-context.md +224 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-03-starter.md +329 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-04-decisions.md +318 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-05-patterns.md +359 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-06-structure.md +379 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-07-validation.md +359 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/steps/step-08-complete.md +76 -0
- package/rihal/skills/actions/3-solutioning/rihal-create-architecture/workflow.md +38 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/SKILL.md +31 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/project-context-template.md +21 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-01-discover.md +186 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-02-generate.md +321 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/steps/step-03-complete.md +278 -0
- package/rihal/skills/actions/3-solutioning/rihal-generate-project-context/workflow.md +43 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/SKILL.md +48 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/generate-trail.md +38 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-01-orientation.md +105 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-02-walkthrough.md +89 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-03-detail-pass.md +106 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-04-testing.md +74 -0
- package/rihal/skills/actions/4-implementation/rihal-checkpoint-preview/step-05-wrapup.md +24 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/SKILL.md +31 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-01-gather-context.md +62 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-02-review.md +34 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-03-triage.md +49 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/steps/step-04-present.md +129 -0
- package/rihal/skills/actions/4-implementation/rihal-code-review/workflow.md +55 -0
- package/rihal/skills/actions/4-implementation/rihal-correct-course/SKILL.md +29 -0
- package/rihal/skills/actions/4-implementation/rihal-correct-course/checklist.md +288 -0
- package/rihal/skills/actions/4-implementation/rihal-correct-course/workflow.md +267 -0
- package/rihal/skills/actions/4-implementation/rihal-dev-story/SKILL.md +36 -0
- package/rihal/skills/actions/4-implementation/rihal-dev-story/checklist.md +80 -0
- package/rihal/skills/actions/4-implementation/rihal-dev-story/workflow.md +450 -0
- package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/SKILL.md +31 -0
- package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/checklist.md +33 -0
- package/rihal/skills/actions/4-implementation/rihal-qa-generate-e2e-tests/workflow.md +136 -0
- package/rihal/skills/actions/4-implementation/rihal-retrospective/SKILL.md +30 -0
- package/rihal/skills/actions/4-implementation/rihal-retrospective/workflow.md +1479 -0
- package/rihal/skills/actions/4-implementation/rihal-scaffold-project/SKILL.md +77 -0
- package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-01-target.md +17 -0
- package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-02-safety.md +35 -0
- package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-03-clone.md +50 -0
- package/rihal/skills/actions/4-implementation/rihal-scaffold-project/steps/step-04-post-setup.md +44 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/SKILL.md +35 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/checklist.md +43 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/sprint-status-template.yaml +56 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-planning/workflow.md +284 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-status/SKILL.md +30 -0
- package/rihal/skills/actions/4-implementation/rihal-sprint-status/workflow.md +261 -0
- package/rihal/skills/agents/ahmed-hassani-director/SKILL.md +121 -0
- package/rihal/skills/agents/fatima-qa/SKILL.md +106 -0
- package/rihal/skills/agents/fatima-qa/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/haitham-frontend/SKILL.md +120 -0
- package/rihal/skills/agents/hanzla-engineer/SKILL.md +109 -0
- package/rihal/skills/agents/hanzla-engineer/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/hussain-pm/SKILL.md +107 -0
- package/rihal/skills/agents/hussain-pm/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/hussain-sm/SKILL.md +104 -0
- package/rihal/skills/agents/hussain-sm/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/layla-designer/SKILL.md +96 -0
- package/rihal/skills/agents/layla-designer/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/majlis-council/SKILL.md +179 -0
- package/rihal/skills/agents/mariam-marketing/SKILL.md +133 -0
- package/rihal/skills/agents/nasser-eng-manager/SKILL.md +125 -0
- package/rihal/skills/agents/noor-writer/SKILL.md +104 -0
- package/rihal/skills/agents/noor-writer/explain-concept.md +20 -0
- package/rihal/skills/agents/noor-writer/mermaid-gen.md +20 -0
- package/rihal/skills/agents/noor-writer/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/noor-writer/validate-doc.md +19 -0
- package/rihal/skills/agents/noor-writer/write-document.md +20 -0
- package/rihal/skills/agents/raees-orchestrator/SKILL.md +154 -0
- package/rihal/skills/agents/sadiq-analyst/SKILL.md +106 -0
- package/rihal/skills/agents/sadiq-analyst/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/waleed-architect/SKILL.md +106 -0
- package/rihal/skills/agents/waleed-architect/skill-manifest.yaml +11 -0
- package/rihal/skills/agents/yousef-backend/SKILL.md +136 -0
- package/rihal/skills/agents/zahra-branding/SKILL.md +141 -0
- package/rihal/skills/agents/zayd-ml/SKILL.md +124 -0
- package/rihal/skills/core/module-help.csv +11 -0
- package/rihal/skills/core/module.yaml +25 -0
- package/rihal/skills/core/rihal-advanced-elicitation/SKILL.md +155 -0
- package/rihal/skills/core/rihal-advanced-elicitation/methods.csv +51 -0
- package/rihal/skills/core/rihal-advanced-elicitation/rihal-advanced-elicitation/SKILL.md +148 -0
- package/rihal/skills/core/rihal-advanced-elicitation/rihal-advanced-elicitation/methods.csv +51 -0
- package/rihal/skills/core/rihal-brainstorming/SKILL.md +82 -0
- package/rihal/skills/core/rihal-brainstorming/brain-methods.csv +62 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-01-session-setup.md +214 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-01b-continue.md +124 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-02a-user-selected.md +229 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-02b-ai-recommended.md +239 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-02c-random-selection.md +211 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-02d-progressive-flow.md +266 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-03-technique-execution.md +401 -0
- package/rihal/skills/core/rihal-brainstorming/steps/step-04-idea-organization.md +305 -0
- package/rihal/skills/core/rihal-brainstorming/template.md +15 -0
- package/rihal/skills/core/rihal-brainstorming/workflow.md +53 -0
- package/rihal/skills/core/rihal-clone-website/SKILL.md +395 -0
- package/rihal/skills/core/rihal-distillator/SKILL.md +205 -0
- package/rihal/skills/core/rihal-distillator/agents/distillate-compressor.md +116 -0
- package/rihal/skills/core/rihal-distillator/agents/round-trip-reconstructor.md +68 -0
- package/rihal/skills/core/rihal-distillator/resources/compression-rules.md +51 -0
- package/rihal/skills/core/rihal-distillator/resources/distillate-format-reference.md +227 -0
- package/rihal/skills/core/rihal-distillator/resources/splitting-strategy.md +78 -0
- package/rihal/skills/core/rihal-distillator/scripts/analyze_sources.py +300 -0
- package/rihal/skills/core/rihal-distillator/scripts/tests/test_analyze_sources.py +204 -0
- package/rihal/skills/core/rihal-editorial-review-prose/SKILL.md +108 -0
- package/rihal/skills/core/rihal-editorial-review-structure/SKILL.md +193 -0
- package/rihal/skills/core/rihal-help/SKILL.md +91 -0
- package/rihal/skills/core/rihal-index-docs/SKILL.md +80 -0
- package/rihal/skills/core/rihal-init/SKILL.md +119 -0
- package/rihal/skills/core/rihal-init/resources/core-module.yaml +25 -0
- package/rihal/skills/core/rihal-init/scripts/rihal_init.py +593 -0
- package/rihal/skills/core/rihal-init/scripts/tests/test_rihal_init.py +329 -0
- package/rihal/skills/core/rihal-party-mode/SKILL.md +77 -0
- package/rihal/skills/core/rihal-party-mode/steps/step-01-agent-loading.md +138 -0
- package/rihal/skills/core/rihal-party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/rihal/skills/core/rihal-party-mode/steps/step-03-graceful-exit.md +167 -0
- package/rihal/skills/core/rihal-party-mode/workflow.md +190 -0
- package/rihal/skills/core/rihal-review-adversarial-general/SKILL.md +55 -0
- package/rihal/skills/core/rihal-review-edge-case-hunter/SKILL.md +81 -0
- package/rihal/skills/core/rihal-shard-doc/SKILL.md +119 -0
- package/rihal/skills/core/rihal-shard-doc/rihal-shard-doc/SKILL.md +122 -0
- package/rihal/team.yaml +343 -0
- package/rihal/templates/UI-SPEC.md +127 -0
- package/rihal/templates/documentation-requirements.csv +11 -0
- package/rihal/templates/github/bug-template.md +53 -0
- package/rihal/templates/github/epic-template.md +57 -0
- package/rihal/templates/github/feature-template.md +55 -0
- package/rihal/templates/github/task-template.md +52 -0
- package/rihal/templates/milestone.md +147 -0
- package/rihal/templates/projects/api-backend/PROJECT.md +37 -0
- package/rihal/templates/projects/api-backend/REQUIREMENTS.md +38 -0
- package/rihal/templates/projects/api-backend/ROADMAP.md +92 -0
- package/rihal/templates/projects/api-backend/template.yaml +17 -0
- package/rihal/templates/projects/mobile-app/PROJECT.md +37 -0
- package/rihal/templates/projects/mobile-app/REQUIREMENTS.md +32 -0
- package/rihal/templates/projects/mobile-app/ROADMAP.md +93 -0
- package/rihal/templates/projects/mobile-app/template.yaml +17 -0
- package/rihal/templates/projects/saas-b2b/PROJECT.md +40 -0
- package/rihal/templates/projects/saas-b2b/REQUIREMENTS.md +38 -0
- package/rihal/templates/projects/saas-b2b/ROADMAP.md +95 -0
- package/rihal/templates/projects/saas-b2b/template.yaml +18 -0
- package/rihal/templates/settings-hooks.json +36 -0
- package/rihal/templates/sprint.md +70 -0
- package/rihal/workflows/add-phase.md +112 -0
- package/rihal/workflows/add-tests.md +351 -0
- package/rihal/workflows/add-todo.md +181 -0
- package/rihal/workflows/analyze-dependencies.md +138 -0
- package/rihal/workflows/audit-fix.md +190 -0
- package/rihal/workflows/audit-milestone.md +155 -0
- package/rihal/workflows/audit-uat.md +109 -0
- package/rihal/workflows/autonomous.md +992 -0
- package/rihal/workflows/brainstorm.md +203 -0
- package/rihal/workflows/chain.md +188 -0
- package/rihal/workflows/check-implementation-readiness.md +193 -0
- package/rihal/workflows/check-todos.md +177 -0
- package/rihal/workflows/cleanup.md +152 -0
- package/rihal/workflows/code-review-fix.md +529 -0
- package/rihal/workflows/code-review.md +566 -0
- package/rihal/workflows/complete-milestone.md +836 -0
- package/rihal/workflows/config.md +105 -0
- package/rihal/workflows/correct-course.md +190 -0
- package/rihal/workflows/council.md +565 -0
- package/rihal/workflows/create-epics-and-stories.md +373 -0
- package/rihal/workflows/create-story.md +297 -0
- package/rihal/workflows/dashboard.md +102 -0
- package/rihal/workflows/debug.md +256 -0
- package/rihal/workflows/decisions.md +107 -0
- package/rihal/workflows/dev-story.md +432 -0
- package/rihal/workflows/diff.md +74 -0
- package/rihal/workflows/discuss-phase-power.md +325 -0
- package/rihal/workflows/discuss-phase.md +1201 -0
- package/rihal/workflows/discuss.md +227 -0
- package/rihal/workflows/do.md +175 -0
- package/rihal/workflows/docs-update.md +261 -0
- package/rihal/workflows/document-project.md +180 -0
- package/rihal/workflows/enable-hooks.md +102 -0
- package/rihal/workflows/execute-sprint.md +514 -0
- package/rihal/workflows/execute.md +1478 -0
- package/rihal/workflows/explore.md +171 -0
- package/rihal/workflows/export-to-github.md +174 -0
- package/rihal/workflows/forensics.md +201 -0
- package/rihal/workflows/from-template.md +173 -0
- package/rihal/workflows/health.md +194 -0
- package/rihal/workflows/help.md +318 -0
- package/rihal/workflows/import.md +306 -0
- package/rihal/workflows/inbox.md +418 -0
- package/rihal/workflows/init.md +245 -0
- package/rihal/workflows/insert-phase.md +116 -0
- package/rihal/workflows/install.md +85 -0
- package/rihal/workflows/karpathy-audit.md +409 -0
- package/rihal/workflows/list-plans.md +146 -0
- package/rihal/workflows/list-workspaces.md +115 -0
- package/rihal/workflows/map-codebase.md +449 -0
- package/rihal/workflows/milestone-summary.md +206 -0
- package/rihal/workflows/new-milestone.md +616 -0
- package/rihal/workflows/new-project-research.md +262 -0
- package/rihal/workflows/new-project-roadmap.md +446 -0
- package/rihal/workflows/new-project.md +1503 -0
- package/rihal/workflows/new-workspace.md +167 -0
- package/rihal/workflows/next.md +162 -0
- package/rihal/workflows/note.md +156 -0
- package/rihal/workflows/notify-test.md +113 -0
- package/rihal/workflows/pause-work.md +243 -0
- package/rihal/workflows/plan-milestone-gaps.md +273 -0
- package/rihal/workflows/plan.md +1262 -0
- package/rihal/workflows/plant-seed.md +169 -0
- package/rihal/workflows/pr-branch.md +129 -0
- package/rihal/workflows/profile-user.md +162 -0
- package/rihal/workflows/progress.md +184 -0
- package/rihal/workflows/quick.md +105 -0
- package/rihal/workflows/remove-phase.md +155 -0
- package/rihal/workflows/remove-workspace.md +158 -0
- package/rihal/workflows/replay.md +160 -0
- package/rihal/workflows/rerun.md +77 -0
- package/rihal/workflows/research-phase.md +82 -0
- package/rihal/workflows/resume-work.md +326 -0
- package/rihal/workflows/review-adversarial.md +180 -0
- package/rihal/workflows/review-edge-case-hunter.md +214 -0
- package/rihal/workflows/review.md +281 -0
- package/rihal/workflows/scan.md +135 -0
- package/rihal/workflows/secure-phase.md +196 -0
- package/rihal/workflows/session-report.md +187 -0
- package/rihal/workflows/settings.md +185 -0
- package/rihal/workflows/ship.md +237 -0
- package/rihal/workflows/show.md +63 -0
- package/rihal/workflows/sprint-planning.md +166 -0
- package/rihal/workflows/sprint-status.md +124 -0
- package/rihal/workflows/stats.md +141 -0
- package/rihal/workflows/status.md +116 -0
- package/rihal/workflows/ui-phase.md +148 -0
- package/rihal/workflows/ui-review.md +130 -0
- package/rihal/workflows/undo.md +426 -0
- package/rihal/workflows/update.md +185 -0
- package/rihal/workflows/validate-phase.md +174 -0
- package/rihal/workflows/verify-phase.md +375 -0
- package/rihal/workflows/verify-work.md +717 -0
- package/rihal/workflows/why.md +130 -0
- package/rihal/workflows/workstream.md +197 -0
- package/server/dashboard.js +632 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# Hypothesis Templates for Common Bug Types
|
|
2
|
+
|
|
3
|
+
When debugging, use these templates to structure hypotheses quickly. Fill in specifics for your bug.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template 1: Null/Undefined Reference
|
|
8
|
+
|
|
9
|
+
**Symptom:** "Cannot read property X of undefined" or "TypeError: Y is not a function"
|
|
10
|
+
|
|
11
|
+
**Hypothesis Template:**
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Hypothesis: [Variable Name] is null or undefined
|
|
15
|
+
|
|
16
|
+
Why it might be true:
|
|
17
|
+
- [Source of variable] can return undefined
|
|
18
|
+
- [Check for null handling]
|
|
19
|
+
|
|
20
|
+
How to test:
|
|
21
|
+
1. Add log: console.log('${variable}:', ${variable})
|
|
22
|
+
2. Verify log shows null, undefined, or correct value
|
|
23
|
+
3. Check if there's a null check before accessing property
|
|
24
|
+
|
|
25
|
+
Expected result if true:
|
|
26
|
+
- Log shows undefined or null
|
|
27
|
+
- Code accesses property without checking
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Example:**
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Hypothesis: user object is undefined when accessed
|
|
34
|
+
|
|
35
|
+
Why it might be true:
|
|
36
|
+
- fetchUser() doesn't error on 404, just returns undefined
|
|
37
|
+
- No null check before accessing user.name
|
|
38
|
+
|
|
39
|
+
How to test:
|
|
40
|
+
1. Add log: console.log('user:', user) before line 42
|
|
41
|
+
2. If user is undefined, add guard: if (user) { ... }
|
|
42
|
+
|
|
43
|
+
Expected result if true:
|
|
44
|
+
- Log shows "user: undefined"
|
|
45
|
+
- Adding guard fixes the crash
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Template 2: Async/Timing Issue
|
|
51
|
+
|
|
52
|
+
**Symptom:** "Sometimes works, sometimes doesn't", "Race condition suspected"
|
|
53
|
+
|
|
54
|
+
**Hypothesis Template:**
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Hypothesis: [Operation A] starts before [Operation B] completes
|
|
58
|
+
|
|
59
|
+
Why it might be true:
|
|
60
|
+
- [Operation B] is async but not awaited
|
|
61
|
+
- [Operation A] doesn't wait for [Operation B]'s result
|
|
62
|
+
|
|
63
|
+
How to test:
|
|
64
|
+
1. Add timestamps: console.time('B') and console.timeEnd('B')
|
|
65
|
+
2. Verify order of logs
|
|
66
|
+
3. Check if A accesses B's results before they're ready
|
|
67
|
+
|
|
68
|
+
Expected result if true:
|
|
69
|
+
- Logs show A happens before B finishes
|
|
70
|
+
- Adding await/then() fixes the issue
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Example:**
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Hypothesis: saveToDatabase() starts before fetchUser() completes
|
|
77
|
+
|
|
78
|
+
Why it might be true:
|
|
79
|
+
- fetchUser() is async but not awaited
|
|
80
|
+
- saveToDatabase() runs immediately with incomplete data
|
|
81
|
+
|
|
82
|
+
How to test:
|
|
83
|
+
1. Add: console.time('fetchUser') and console.timeEnd('fetchUser')
|
|
84
|
+
2. Add: console.log('About to save:', data)
|
|
85
|
+
3. Verify order: does "About to save" appear before "fetchUser" completes?
|
|
86
|
+
|
|
87
|
+
Expected result if true:
|
|
88
|
+
- Logs show saveToDatabase runs before user data loads
|
|
89
|
+
- Adding await fetchUser() fixes inconsistency
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Template 3: State Mutation / Reference Sharing
|
|
95
|
+
|
|
96
|
+
**Symptom:** "Changing A affects B", "Undo doesn't work", "Array modified unexpectedly"
|
|
97
|
+
|
|
98
|
+
**Hypothesis Template:**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Hypothesis: [Variable A] is a reference to [Variable B], not a copy
|
|
102
|
+
|
|
103
|
+
Why it might be true:
|
|
104
|
+
- [Variable A] was assigned from [Variable B] directly
|
|
105
|
+
- No copy operation (spread, slice, clone) was used
|
|
106
|
+
|
|
107
|
+
How to test:
|
|
108
|
+
1. Add: console.log('A before:', A)
|
|
109
|
+
2. Modify A
|
|
110
|
+
3. Add: console.log('B after:', B)
|
|
111
|
+
4. If B changed too, it's a shared reference
|
|
112
|
+
|
|
113
|
+
Expected result if true:
|
|
114
|
+
- B also changes when A is modified
|
|
115
|
+
- Creating a copy (spread operator, Object.assign) fixes it
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Example:**
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
Hypothesis: newUsers array is a reference to users array
|
|
122
|
+
|
|
123
|
+
Why it might be true:
|
|
124
|
+
- const newUsers = users (no spread or copy)
|
|
125
|
+
- Modifying newUsers affects original users
|
|
126
|
+
|
|
127
|
+
How to test:
|
|
128
|
+
1. console.log('users before:', users)
|
|
129
|
+
2. newUsers[0].name = 'Updated'
|
|
130
|
+
3. console.log('users after:', users)
|
|
131
|
+
4. If users[0].name is 'Updated' too, shared reference confirmed
|
|
132
|
+
|
|
133
|
+
Expected result if true:
|
|
134
|
+
- users array is modified when newUsers is modified
|
|
135
|
+
- Fix: const newUsers = [...users]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Template 4: Logic Error / Conditional Bug
|
|
141
|
+
|
|
142
|
+
**Symptom:** "Code takes wrong branch", "Condition never true", "Loop doesn't execute"
|
|
143
|
+
|
|
144
|
+
**Hypothesis Template:**
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Hypothesis: Condition [EXPRESSION] evaluates incorrectly
|
|
148
|
+
|
|
149
|
+
Why it might be true:
|
|
150
|
+
- [Type comparison issue: == vs ===]
|
|
151
|
+
- [Truthy/falsy misunderstanding]
|
|
152
|
+
- [Logic operator order (AND vs OR)]
|
|
153
|
+
|
|
154
|
+
How to test:
|
|
155
|
+
1. Add: console.log('[EXPRESSION]:', [EXPRESSION])
|
|
156
|
+
2. Verify actual value vs expected
|
|
157
|
+
3. Check operator precedence
|
|
158
|
+
|
|
159
|
+
Expected result if true:
|
|
160
|
+
- Log shows condition is false when it should be true
|
|
161
|
+
- Fixing operator or type comparison resolves issue
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Example:**
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
Hypothesis: Loop condition i < items.length - 1 skips last item
|
|
168
|
+
|
|
169
|
+
Why it might be true:
|
|
170
|
+
- Loop uses i < items.length - 1 instead of i < items.length
|
|
171
|
+
- Off-by-one error in boundary
|
|
172
|
+
|
|
173
|
+
How to test:
|
|
174
|
+
1. Add: console.log('Loop at i:', i, 'items.length:', items.length)
|
|
175
|
+
2. Verify if loop stops before processing last item
|
|
176
|
+
3. Count iterations
|
|
177
|
+
|
|
178
|
+
Expected result if true:
|
|
179
|
+
- Last item is skipped in loop
|
|
180
|
+
- Removing "- 1" processes all items
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Template 5: External Dependency Issue
|
|
186
|
+
|
|
187
|
+
**Symptom:** "Library doesn't work as expected", "API returns wrong format", "Function call fails"
|
|
188
|
+
|
|
189
|
+
**Hypothesis Template:**
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
Hypothesis: [Library/API] [does not work / changed behavior] due to [version/configuration]
|
|
193
|
+
|
|
194
|
+
Why it might be true:
|
|
195
|
+
- Version mismatch between package.json and installed version
|
|
196
|
+
- Configuration was not set
|
|
197
|
+
- API changed in new version
|
|
198
|
+
|
|
199
|
+
How to test:
|
|
200
|
+
1. Check version: npm list [library]
|
|
201
|
+
2. Check documentation for [version]
|
|
202
|
+
3. Test library in isolation: [test code]
|
|
203
|
+
4. Verify configuration is applied
|
|
204
|
+
|
|
205
|
+
Expected result if true:
|
|
206
|
+
- Version mismatch or config missing
|
|
207
|
+
- Updating version or config fixes issue
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Example:**
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
Hypothesis: bcrypt.compare() doesn't work due to missing await
|
|
214
|
+
|
|
215
|
+
Why it might be true:
|
|
216
|
+
- bcrypt.compare() returns a Promise
|
|
217
|
+
- Code doesn't await the promise
|
|
218
|
+
|
|
219
|
+
How to test:
|
|
220
|
+
1. Check bcrypt docs: confirm it's async
|
|
221
|
+
2. Test in isolation: const result = await bcrypt.compare(...)
|
|
222
|
+
3. Verify result is boolean, not Promise
|
|
223
|
+
|
|
224
|
+
Expected result if true:
|
|
225
|
+
- Without await, result is Promise (truthy)
|
|
226
|
+
- With await, result is actual boolean
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Template 6: Environment/Configuration Issue
|
|
232
|
+
|
|
233
|
+
**Symptom:** "Works locally, fails in production", "Missing env variable", "Wrong configuration loaded"
|
|
234
|
+
|
|
235
|
+
**Hypothesis Template:**
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
Hypothesis: [Configuration/Env Variable] is missing or incorrect in [Environment]
|
|
239
|
+
|
|
240
|
+
Why it might be true:
|
|
241
|
+
- Variable not set in [Environment]'s .env file
|
|
242
|
+
- Fallback not provided
|
|
243
|
+
- Wrong value loaded
|
|
244
|
+
|
|
245
|
+
How to test:
|
|
246
|
+
1. Check: console.log('Config:', process.env.[VAR_NAME])
|
|
247
|
+
2. Verify against .env files
|
|
248
|
+
3. Check if code handles missing config gracefully
|
|
249
|
+
|
|
250
|
+
Expected result if true:
|
|
251
|
+
- Log shows undefined or wrong value
|
|
252
|
+
- Adding to .env fixes issue
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Example:**
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Hypothesis: API_URL is missing in production environment
|
|
259
|
+
|
|
260
|
+
Why it might be true:
|
|
261
|
+
- .env file not deployed to production
|
|
262
|
+
- Environment variable not set on server
|
|
263
|
+
- Fallback URL doesn't exist
|
|
264
|
+
|
|
265
|
+
How to test:
|
|
266
|
+
1. SSH to production: echo $API_URL
|
|
267
|
+
2. If empty, environment variable not set
|
|
268
|
+
3. Check if code has fallback for missing API_URL
|
|
269
|
+
|
|
270
|
+
Expected result if true:
|
|
271
|
+
- $API_URL is empty or unset
|
|
272
|
+
- Setting it in production environment fixes requests
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Template 7: Data Format Mismatch
|
|
278
|
+
|
|
279
|
+
**Symptom:** "Data validation fails", "Type error on valid data", "Parsing fails"
|
|
280
|
+
|
|
281
|
+
**Hypothesis Template:**
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
Hypothesis: Input data format [ACTUAL] does not match expected format [EXPECTED]
|
|
285
|
+
|
|
286
|
+
Why it might be true:
|
|
287
|
+
- API response changed format
|
|
288
|
+
- Database schema doesn't match expectations
|
|
289
|
+
- Type conversion not happening
|
|
290
|
+
|
|
291
|
+
How to test:
|
|
292
|
+
1. Log the actual data: console.log('Raw input:', JSON.stringify(input, null, 2))
|
|
293
|
+
2. Compare against expected schema
|
|
294
|
+
3. Check parsing/conversion logic
|
|
295
|
+
|
|
296
|
+
Expected result if true:
|
|
297
|
+
- Log shows format mismatch
|
|
298
|
+
- Adding parsing/validation layer fixes issue
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**Example:**
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
Hypothesis: API returns timestamp as string, code expects number
|
|
305
|
+
|
|
306
|
+
Why it might be true:
|
|
307
|
+
- API changed response format
|
|
308
|
+
- Timestamp parsing was removed
|
|
309
|
+
- Code assumes number but API returns ISO string
|
|
310
|
+
|
|
311
|
+
How to test:
|
|
312
|
+
1. Log response: console.log('Timestamp:', response.timestamp, typeof response.timestamp)
|
|
313
|
+
2. Verify API documentation
|
|
314
|
+
3. Check conversion logic
|
|
315
|
+
|
|
316
|
+
Expected result if true:
|
|
317
|
+
- typeof timestamp is 'string', not 'number'
|
|
318
|
+
- Parsing with new Date(timestamp).getTime() fixes calculations
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Using These Templates
|
|
324
|
+
|
|
325
|
+
1. **Pick the template** matching your symptom
|
|
326
|
+
2. **Fill in specifics** for your bug
|
|
327
|
+
3. **Follow the testing steps** to confirm/disprove
|
|
328
|
+
4. **Record the result** in investigation.md
|
|
329
|
+
|
|
330
|
+
Don't use hypotheses as crutches — they should guide testing, not replace actual investigation.
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Investigation Protocol for Systematic Debugging
|
|
2
|
+
|
|
3
|
+
When debugging, follow a structured protocol that combines multiple investigation techniques. Pick the right technique for each phase of the investigation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Phase 1: Evidence Gathering
|
|
8
|
+
|
|
9
|
+
**Goal:** Establish facts before forming hypotheses.
|
|
10
|
+
|
|
11
|
+
### Technique: Reading the Error
|
|
12
|
+
|
|
13
|
+
Start with the **exact error message**, trace, or symptom.
|
|
14
|
+
|
|
15
|
+
**Steps:**
|
|
16
|
+
1. Find the exact error (not paraphrased, not guessed)
|
|
17
|
+
2. Read every line of the traceback
|
|
18
|
+
3. Note the file, line number, and function name
|
|
19
|
+
4. Copy the error verbatim — don't sanitize
|
|
20
|
+
|
|
21
|
+
**Example:**
|
|
22
|
+
- ✅ "TypeError: Cannot read property 'map' of undefined at processUsers (src/api.js:42)"
|
|
23
|
+
- ❌ "The code crashed when processing users"
|
|
24
|
+
|
|
25
|
+
### Technique: Code Review (Focused)
|
|
26
|
+
|
|
27
|
+
Read the **exact code** mentioned in the error.
|
|
28
|
+
|
|
29
|
+
**Steps:**
|
|
30
|
+
1. Open the file at the line mentioned
|
|
31
|
+
2. Read the entire function (not just the line)
|
|
32
|
+
3. Read imports/dependencies
|
|
33
|
+
4. Look for obvious issues (missing null checks, typos, logic errors)
|
|
34
|
+
|
|
35
|
+
### Technique: Reproduce the Bug
|
|
36
|
+
|
|
37
|
+
Get the bug to happen consistently.
|
|
38
|
+
|
|
39
|
+
**Steps:**
|
|
40
|
+
1. Follow the exact steps user described
|
|
41
|
+
2. Document what triggers it (specific input, state, timing)
|
|
42
|
+
3. Try variations (does it happen always, or only sometimes?)
|
|
43
|
+
4. If intermittent, investigate timing/concurrency
|
|
44
|
+
|
|
45
|
+
**Red Flag:** "I can't reproduce it" = you haven't understood the trigger yet. Keep trying.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Phase 2: Hypothesis Formation
|
|
50
|
+
|
|
51
|
+
**Goal:** Generate 3+ independent hypotheses before investigating.
|
|
52
|
+
|
|
53
|
+
### Rule: Write Down Your Hypotheses
|
|
54
|
+
|
|
55
|
+
Don't hold them in your head. Write them explicitly.
|
|
56
|
+
|
|
57
|
+
**Format:**
|
|
58
|
+
```
|
|
59
|
+
Hypothesis 1: [Specific claim about root cause]
|
|
60
|
+
Evidence for: [Facts that support this]
|
|
61
|
+
Evidence against: [Facts that contradict this]
|
|
62
|
+
How to test: [Automated check that proves/disproves]
|
|
63
|
+
|
|
64
|
+
Hypothesis 2: ...
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Rule: Generate Multiple Hypotheses
|
|
68
|
+
|
|
69
|
+
Generate at least 3 before picking one to test. Why?
|
|
70
|
+
- First hypothesis is often wrong (confirmation bias)
|
|
71
|
+
- Multiple hypotheses prevent tunnel vision
|
|
72
|
+
- Testing one hypothesis can eliminate others
|
|
73
|
+
|
|
74
|
+
**Example: "Login button doesn't work"**
|
|
75
|
+
|
|
76
|
+
Hypothesis 1: Network request failing
|
|
77
|
+
- Check: Network tab shows request status
|
|
78
|
+
- Test: Mock API endpoint
|
|
79
|
+
|
|
80
|
+
Hypothesis 2: Form validation blocking submission
|
|
81
|
+
- Check: Console logs show validation error
|
|
82
|
+
- Test: Fill form with valid data, retry
|
|
83
|
+
|
|
84
|
+
Hypothesis 3: Click handler not registered
|
|
85
|
+
- Check: Console logs from click event
|
|
86
|
+
- Test: Add debug logs to handler function
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Phase 3: Systematic Testing
|
|
91
|
+
|
|
92
|
+
### Technique: Binary Search (for "which component")
|
|
93
|
+
|
|
94
|
+
When unsure which piece is broken, use binary search.
|
|
95
|
+
|
|
96
|
+
**Example: "Payments work, but shipping calculation is wrong"**
|
|
97
|
+
```
|
|
98
|
+
Test 1: Does shipping API respond at all?
|
|
99
|
+
→ Yes
|
|
100
|
+
Test 2: Is the shipping calc using correct input?
|
|
101
|
+
→ No — it's using stale address
|
|
102
|
+
Test 3: Where does stale address come from?
|
|
103
|
+
→ Form component not clearing on checkout start
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Each test eliminates half the problem space.
|
|
107
|
+
|
|
108
|
+
### Technique: Rubber Duck Debugging
|
|
109
|
+
|
|
110
|
+
Explain the code out loud to an imaginary duck (or your screen).
|
|
111
|
+
|
|
112
|
+
**Process:**
|
|
113
|
+
1. Read code line by line
|
|
114
|
+
2. State what you expect each line to do
|
|
115
|
+
3. When you find a mismatch, you've found the bug
|
|
116
|
+
|
|
117
|
+
**Example:**
|
|
118
|
+
- Line 1: `const user = getUserFromId(id)` — "Get user by ID"
|
|
119
|
+
- Line 2: `return user.name` — "Return the user's name"
|
|
120
|
+
- Line 3: `if (user.is_admin)` — Wait, we checked `.name` on line 2, but line 3 assumes `user` exists. But what if `id` doesn't exist? `getUserFromId` might return `null`.
|
|
121
|
+
|
|
122
|
+
### Technique: Add Logging Strategically
|
|
123
|
+
|
|
124
|
+
Don't spam logs everywhere. Place them to test specific hypotheses.
|
|
125
|
+
|
|
126
|
+
**Strategic Logging:**
|
|
127
|
+
1. Log inputs to a suspicious function
|
|
128
|
+
2. Log the result/return value
|
|
129
|
+
3. Log control flow decisions (if branches)
|
|
130
|
+
|
|
131
|
+
**Example: "Login fails sometimes"**
|
|
132
|
+
```javascript
|
|
133
|
+
// Before login attempt
|
|
134
|
+
console.log('loginAttempt', { email, hasPassword: !!password });
|
|
135
|
+
|
|
136
|
+
// In login function
|
|
137
|
+
console.log('apiCall', { url, method });
|
|
138
|
+
console.log('apiResponse', { status, body });
|
|
139
|
+
|
|
140
|
+
// After response
|
|
141
|
+
console.log('loginSuccess', { tokenLength, userId });
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Then check logs to see which step fails.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Phase 4: Root Cause Confirmation
|
|
149
|
+
|
|
150
|
+
### Rule: One Change at a Time
|
|
151
|
+
|
|
152
|
+
Fix one hypothesized issue, test, observe.
|
|
153
|
+
|
|
154
|
+
**Why:** Multiple changes mask which one worked (or if any did).
|
|
155
|
+
|
|
156
|
+
**Example:**
|
|
157
|
+
- ❌ "I added a null check AND updated the API call AND refactored the loop"
|
|
158
|
+
- ✅ "I added a null check. Testing now. If it fixes the issue, I'll commit. If not, I'll revert and try the next hypothesis."
|
|
159
|
+
|
|
160
|
+
### Rule: Verify the Fix Works
|
|
161
|
+
|
|
162
|
+
Fix is confirmed when:
|
|
163
|
+
1. **Bug reproducer now passes** — The exact steps that broke it now work
|
|
164
|
+
2. **No regressions** — Tests that passed before still pass
|
|
165
|
+
3. **Root cause is understood** — You can explain WHY the bug happened
|
|
166
|
+
|
|
167
|
+
**Red Flag:** "I made a change and the bug went away, but I don't know why" = Not fixed, just lucky. Revert and investigate properly.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Common Investigation Patterns
|
|
172
|
+
|
|
173
|
+
### Pattern 1: Null/Undefined Reference
|
|
174
|
+
|
|
175
|
+
**Symptoms:** "Cannot read property X of undefined"
|
|
176
|
+
|
|
177
|
+
**Investigation:**
|
|
178
|
+
1. Find the line that crashed
|
|
179
|
+
2. What variable was being accessed?
|
|
180
|
+
3. Where did that variable come from?
|
|
181
|
+
4. What could make it null/undefined?
|
|
182
|
+
|
|
183
|
+
**Example:**
|
|
184
|
+
```
|
|
185
|
+
Error: Cannot read property 'name' of undefined at getUserDisplay
|
|
186
|
+
|
|
187
|
+
Line: return user.name
|
|
188
|
+
|
|
189
|
+
Where did `user` come from?
|
|
190
|
+
→ const user = fetchUser(id)
|
|
191
|
+
|
|
192
|
+
What if fetchUser fails?
|
|
193
|
+
→ It returns undefined (no error thrown)
|
|
194
|
+
|
|
195
|
+
Fix: Check if user exists before accessing user.name
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Pattern 2: Off-by-One Error
|
|
199
|
+
|
|
200
|
+
**Symptoms:** "Wrong item selected", "loop processes 1 less than expected"
|
|
201
|
+
|
|
202
|
+
**Investigation:**
|
|
203
|
+
1. Identify the loop or index operation
|
|
204
|
+
2. Trace what indices it uses
|
|
205
|
+
3. Print the range (start, end, count)
|
|
206
|
+
4. Verify it matches expectations
|
|
207
|
+
|
|
208
|
+
**Example:**
|
|
209
|
+
```
|
|
210
|
+
for (let i = 0; i < items.length - 1; i++) {
|
|
211
|
+
// This skips the last item!
|
|
212
|
+
process(items[i]);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
Fix: Remove the "- 1"
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Pattern 3: Async/Timing Issues
|
|
219
|
+
|
|
220
|
+
**Symptoms:** "Sometimes it works, sometimes it doesn't", "Order of events is wrong"
|
|
221
|
+
|
|
222
|
+
**Investigation:**
|
|
223
|
+
1. Identify all async operations (API calls, timeouts, promises)
|
|
224
|
+
2. Trace the exact order they execute
|
|
225
|
+
3. Identify what SHOULD happen and what ACTUALLY happens
|
|
226
|
+
4. Add timestamps to logs
|
|
227
|
+
|
|
228
|
+
**Example:**
|
|
229
|
+
```
|
|
230
|
+
// Bad: Race condition
|
|
231
|
+
updateUser(data); // async
|
|
232
|
+
saveToLocalStorage(data); // sync, runs before updateUser finishes
|
|
233
|
+
|
|
234
|
+
// Fixed: Wait for async to finish
|
|
235
|
+
await updateUser(data);
|
|
236
|
+
saveToLocalStorage(data);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Pattern 4: State Mutation
|
|
240
|
+
|
|
241
|
+
**Symptoms:** "Changing A affects B somehow", "Undo doesn't work", "Component renders wrong"
|
|
242
|
+
|
|
243
|
+
**Investigation:**
|
|
244
|
+
1. Find where state is mutated
|
|
245
|
+
2. Check if it's mutated directly or a copy
|
|
246
|
+
3. Verify unrelated changes don't affect state
|
|
247
|
+
|
|
248
|
+
**Example:**
|
|
249
|
+
```
|
|
250
|
+
// Bad: Mutates shared reference
|
|
251
|
+
const newUsers = users;
|
|
252
|
+
newUsers[0].name = "Updated"; // Also changes original `users`
|
|
253
|
+
|
|
254
|
+
// Fixed: Create copy
|
|
255
|
+
const newUsers = [...users];
|
|
256
|
+
newUsers[0] = { ...newUsers[0], name: "Updated" };
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## When to Stop & Restart
|
|
262
|
+
|
|
263
|
+
After 30 minutes with no progress, consider restarting:
|
|
264
|
+
|
|
265
|
+
1. **Close all files** — Fresh eyes
|
|
266
|
+
2. **Write down facts** — What you KNOW is true
|
|
267
|
+
3. **Write down ruled-out hypotheses** — What you've eliminated
|
|
268
|
+
4. **Generate NEW hypotheses** — Different from before
|
|
269
|
+
5. **Begin evidence gathering again**
|
|
270
|
+
|
|
271
|
+
Restarting is not giving up — it's getting unstuck.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Documentation as You Go
|
|
276
|
+
|
|
277
|
+
Maintain a log in `.rihal/debug/investigation.md`:
|
|
278
|
+
|
|
279
|
+
```markdown
|
|
280
|
+
## Bug: [Symptom]
|
|
281
|
+
Date: [When investigated]
|
|
282
|
+
|
|
283
|
+
### Evidence
|
|
284
|
+
- [Fact 1]
|
|
285
|
+
- [Fact 2]
|
|
286
|
+
|
|
287
|
+
### Hypotheses Tested
|
|
288
|
+
1. [Hypothesis] → DISPROVEN because [evidence]
|
|
289
|
+
2. [Hypothesis] → CONFIRMED because [evidence]
|
|
290
|
+
|
|
291
|
+
### Root Cause
|
|
292
|
+
[Explanation of why the bug happens]
|
|
293
|
+
|
|
294
|
+
### Fix
|
|
295
|
+
[Code change + test verification]
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
This log survives context resets and helps if you return to the bug later.
|