all-hands-cli 0.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/.allhands/README.md +75 -0
- package/.allhands/agents/compounder.yaml +15 -0
- package/.allhands/agents/coordinator.yaml +17 -0
- package/.allhands/agents/documentor.yaml +15 -0
- package/.allhands/agents/e2e-test-planner.yaml +17 -0
- package/.allhands/agents/emergent.yaml +22 -0
- package/.allhands/agents/executor.yaml +14 -0
- package/.allhands/agents/ideation.yaml +11 -0
- package/.allhands/agents/initiative-steering.yaml +19 -0
- package/.allhands/agents/judge.yaml +13 -0
- package/.allhands/agents/planner.yaml +19 -0
- package/.allhands/agents/pr-reviewer.yaml +15 -0
- package/.allhands/docs.json +5 -0
- package/.allhands/docs.local.json +26 -0
- package/.allhands/flows/COMPOUNDING.md +203 -0
- package/.allhands/flows/COORDINATION.md +89 -0
- package/.allhands/flows/CORE.md +87 -0
- package/.allhands/flows/DOCUMENTATION.md +218 -0
- package/.allhands/flows/E2E_TEST_PLAN_BUILDING.md +140 -0
- package/.allhands/flows/EMERGENT_PLANNING.md +57 -0
- package/.allhands/flows/IDEATION_SCOPING.md +154 -0
- package/.allhands/flows/INITIATIVE_STEERING.md +110 -0
- package/.allhands/flows/JUDGE_REVIEWING.md +79 -0
- package/.allhands/flows/PROMPT_TASK_EXECUTION.md +68 -0
- package/.allhands/flows/PR_REVIEWING.md +43 -0
- package/.allhands/flows/SPEC_PLANNING.md +216 -0
- package/.allhands/flows/harness/WRITING_HARNESS_FLOWS.md +27 -0
- package/.allhands/flows/harness/WRITING_HARNESS_KNOWLEDGE.md +27 -0
- package/.allhands/flows/harness/WRITING_HARNESS_ORCHESTRATION.md +27 -0
- package/.allhands/flows/harness/WRITING_HARNESS_SKILLS.md +27 -0
- package/.allhands/flows/harness/WRITING_HARNESS_TOOLS.md +27 -0
- package/.allhands/flows/harness/WRITING_HARNESS_VALIDATION_TOOLING.md +27 -0
- package/.allhands/flows/shared/CODEBASE_UNDERSTANDING.md +72 -0
- package/.allhands/flows/shared/CREATE_HARNESS_SPEC.md +48 -0
- package/.allhands/flows/shared/CREATE_SPEC.md +41 -0
- package/.allhands/flows/shared/CREATE_VALIDATION_TOOLING_SPEC.md +70 -0
- package/.allhands/flows/shared/DOCUMENTATION_DISCOVERY.md +123 -0
- package/.allhands/flows/shared/DOCUMENTATION_WRITER.md +101 -0
- package/.allhands/flows/shared/EMERGENT_REFINEMENT_ANALYSIS.md +76 -0
- package/.allhands/flows/shared/EXTERNAL_TECH_GUIDANCE.md +97 -0
- package/.allhands/flows/shared/IDEATION_CODEBASE_GROUNDING.md +49 -0
- package/.allhands/flows/shared/PLAN_DEEPENING.md +152 -0
- package/.allhands/flows/shared/PROMPT_TASKS_CURATION.md +113 -0
- package/.allhands/flows/shared/PROMPT_VALIDATION_REVIEW.MD +99 -0
- package/.allhands/flows/shared/QUICK_PREMORTEM.md +70 -0
- package/.allhands/flows/shared/RESEARCH_GUIDANCE.md +38 -0
- package/.allhands/flows/shared/REVIEW_OPTIONS_BREAKDOWN.md +68 -0
- package/.allhands/flows/shared/SKILL_EXTRACTION.md +84 -0
- package/.allhands/flows/shared/SPEC_FLOW_ANALYSIS.md +119 -0
- package/.allhands/flows/shared/TDD_WORKFLOW.md +109 -0
- package/.allhands/flows/shared/UTILIZE_VALIDATION_TOOLING.md +84 -0
- package/.allhands/flows/shared/WRITING_HARNESS_FLOWS.md +11 -0
- package/.allhands/flows/shared/WRITING_HARNESS_MCP_TOOLS.md +84 -0
- package/.allhands/flows/shared/jury/ARCHITECTURE_REVIEW.md +91 -0
- package/.allhands/flows/shared/jury/BEST_PRACTICES_REVIEW.md +80 -0
- package/.allhands/flows/shared/jury/CLAIM_VERIFICATION_REVIEW.md +101 -0
- package/.allhands/flows/shared/jury/EXPECTATIONS_FIT_REVIEW.md +78 -0
- package/.allhands/flows/shared/jury/MAINTAINABILITY_REVIEW.md +110 -0
- package/.allhands/flows/shared/jury/PROMPTS_EXPECTATIONS_FIT.md +74 -0
- package/.allhands/flows/shared/jury/PROMPTS_FLOW_ANALYSIS.md +92 -0
- package/.allhands/flows/shared/jury/PROMPTS_YAGNI.md +78 -0
- package/.allhands/flows/shared/jury/PROMPT_PREMORTEM.md +125 -0
- package/.allhands/flows/shared/jury/SECURITY_REVIEW.md +86 -0
- package/.allhands/flows/shared/jury/YAGNI_REVIEW.md +82 -0
- package/.allhands/flows/wip/DEBUG_INVESTIGATION.md +162 -0
- package/.allhands/flows/wip/MEMORY_RECALL.md +62 -0
- package/.allhands/harness/ah +131 -0
- package/.allhands/harness/package-lock.json +5292 -0
- package/.allhands/harness/package.json +52 -0
- package/.allhands/harness/src/__tests__/e2e/commands.test.ts +307 -0
- package/.allhands/harness/src/__tests__/e2e/event-loop.test.ts +539 -0
- package/.allhands/harness/src/__tests__/e2e/hooks.test.ts +427 -0
- package/.allhands/harness/src/__tests__/e2e/new-initiative-routing.test.ts +137 -0
- package/.allhands/harness/src/__tests__/e2e/run-e2e.ts +109 -0
- package/.allhands/harness/src/__tests__/e2e/specs-type.test.ts +210 -0
- package/.allhands/harness/src/__tests__/e2e/validation-hooks.test.ts +669 -0
- package/.allhands/harness/src/__tests__/e2e/validation-path-consistency.test.ts +354 -0
- package/.allhands/harness/src/__tests__/e2e/validation.test.ts +528 -0
- package/.allhands/harness/src/__tests__/harness/assertions.ts +318 -0
- package/.allhands/harness/src/__tests__/harness/cli-runner.ts +359 -0
- package/.allhands/harness/src/__tests__/harness/fixture.ts +384 -0
- package/.allhands/harness/src/__tests__/harness/hook-runner.ts +411 -0
- package/.allhands/harness/src/__tests__/harness/index.ts +122 -0
- package/.allhands/harness/src/cli.ts +36 -0
- package/.allhands/harness/src/commands/complexity.ts +177 -0
- package/.allhands/harness/src/commands/context7.ts +202 -0
- package/.allhands/harness/src/commands/docs.ts +557 -0
- package/.allhands/harness/src/commands/hooks.ts +24 -0
- package/.allhands/harness/src/commands/index.ts +51 -0
- package/.allhands/harness/src/commands/knowledge.ts +382 -0
- package/.allhands/harness/src/commands/memories.ts +302 -0
- package/.allhands/harness/src/commands/notify.ts +61 -0
- package/.allhands/harness/src/commands/oracle.ts +158 -0
- package/.allhands/harness/src/commands/perplexity.ts +220 -0
- package/.allhands/harness/src/commands/planning.ts +245 -0
- package/.allhands/harness/src/commands/schema.ts +73 -0
- package/.allhands/harness/src/commands/skills.ts +128 -0
- package/.allhands/harness/src/commands/solutions.ts +353 -0
- package/.allhands/harness/src/commands/spawn.ts +158 -0
- package/.allhands/harness/src/commands/specs.ts +532 -0
- package/.allhands/harness/src/commands/tavily.ts +226 -0
- package/.allhands/harness/src/commands/tools.ts +579 -0
- package/.allhands/harness/src/commands/trace.ts +327 -0
- package/.allhands/harness/src/commands/tui.ts +960 -0
- package/.allhands/harness/src/commands/validate.ts +143 -0
- package/.allhands/harness/src/commands/validation-tools.ts +108 -0
- package/.allhands/harness/src/hooks/context.ts +1442 -0
- package/.allhands/harness/src/hooks/enforcement.ts +170 -0
- package/.allhands/harness/src/hooks/index.ts +54 -0
- package/.allhands/harness/src/hooks/lifecycle.ts +229 -0
- package/.allhands/harness/src/hooks/notification.ts +104 -0
- package/.allhands/harness/src/hooks/observability.ts +551 -0
- package/.allhands/harness/src/hooks/session.ts +88 -0
- package/.allhands/harness/src/hooks/shared.ts +815 -0
- package/.allhands/harness/src/hooks/transcript-parser.ts +208 -0
- package/.allhands/harness/src/hooks/validation.ts +617 -0
- package/.allhands/harness/src/lib/__tests__/ctags.test.ts +244 -0
- package/.allhands/harness/src/lib/__tests__/docs-validation.test.ts +344 -0
- package/.allhands/harness/src/lib/__tests__/mcp-runtime.test.ts +190 -0
- package/.allhands/harness/src/lib/__tests__/schema.test.ts +861 -0
- package/.allhands/harness/src/lib/base-command.ts +198 -0
- package/.allhands/harness/src/lib/cli-daemon.ts +343 -0
- package/.allhands/harness/src/lib/compaction.ts +313 -0
- package/.allhands/harness/src/lib/ctags.ts +497 -0
- package/.allhands/harness/src/lib/docs-validation.ts +907 -0
- package/.allhands/harness/src/lib/event-loop.ts +662 -0
- package/.allhands/harness/src/lib/flows.ts +155 -0
- package/.allhands/harness/src/lib/git.ts +276 -0
- package/.allhands/harness/src/lib/knowledge-worker.ts +72 -0
- package/.allhands/harness/src/lib/knowledge.ts +810 -0
- package/.allhands/harness/src/lib/llm.ts +255 -0
- package/.allhands/harness/src/lib/mcp-client.ts +432 -0
- package/.allhands/harness/src/lib/mcp-daemon.ts +486 -0
- package/.allhands/harness/src/lib/mcp-runtime.ts +418 -0
- package/.allhands/harness/src/lib/notification.ts +115 -0
- package/.allhands/harness/src/lib/opencode/index.ts +70 -0
- package/.allhands/harness/src/lib/opencode/profiles.ts +300 -0
- package/.allhands/harness/src/lib/opencode/prompts/codesearch.md +98 -0
- package/.allhands/harness/src/lib/opencode/prompts/knowledge-aggregator.md +67 -0
- package/.allhands/harness/src/lib/opencode/runner.ts +281 -0
- package/.allhands/harness/src/lib/oracle.ts +926 -0
- package/.allhands/harness/src/lib/planning-utils.ts +150 -0
- package/.allhands/harness/src/lib/planning.ts +605 -0
- package/.allhands/harness/src/lib/pr-review.ts +225 -0
- package/.allhands/harness/src/lib/prompts.ts +522 -0
- package/.allhands/harness/src/lib/schema.ts +418 -0
- package/.allhands/harness/src/lib/schemas/agent-profile.ts +141 -0
- package/.allhands/harness/src/lib/schemas/template-vars.ts +138 -0
- package/.allhands/harness/src/lib/session.ts +164 -0
- package/.allhands/harness/src/lib/specs.ts +348 -0
- package/.allhands/harness/src/lib/tldr.ts +829 -0
- package/.allhands/harness/src/lib/tmux.ts +1051 -0
- package/.allhands/harness/src/lib/trace-store.ts +714 -0
- package/.allhands/harness/src/mcp/__tests__/index.test.ts +46 -0
- package/.allhands/harness/src/mcp/_template.ts +47 -0
- package/.allhands/harness/src/mcp/filesystem.ts +33 -0
- package/.allhands/harness/src/mcp/index.ts +69 -0
- package/.allhands/harness/src/mcp/playwright.ts +34 -0
- package/.allhands/harness/src/mcp/xcodebuild.ts +29 -0
- package/.allhands/harness/src/schemas/docs.schema.json +44 -0
- package/.allhands/harness/src/schemas/settings.schema.json +214 -0
- package/.allhands/harness/src/tui/actions.ts +227 -0
- package/.allhands/harness/src/tui/file-viewer-modal.ts +270 -0
- package/.allhands/harness/src/tui/index.ts +1574 -0
- package/.allhands/harness/src/tui/modal.ts +232 -0
- package/.allhands/harness/src/tui/prompts-pane.ts +186 -0
- package/.allhands/harness/src/tui/status-pane.ts +434 -0
- package/.allhands/harness/tsconfig.json +22 -0
- package/.allhands/harness/vitest.config.ts +13 -0
- package/.allhands/pillars.md +33 -0
- package/.allhands/principles.md +88 -0
- package/.allhands/schemas/alignment.yaml +51 -0
- package/.allhands/schemas/documentation.yaml +10 -0
- package/.allhands/schemas/prompt.yaml +92 -0
- package/.allhands/schemas/skill.yaml +34 -0
- package/.allhands/schemas/solution.yaml +131 -0
- package/.allhands/schemas/spec.yaml +67 -0
- package/.allhands/schemas/validation-suite.yaml +49 -0
- package/.allhands/schemas/workflow.yaml +51 -0
- package/.allhands/settings.json +57 -0
- package/.allhands/skills/claude-code-patterns/SKILL.md +60 -0
- package/.allhands/skills/claude-code-patterns/docs/context-hygiene.md +19 -0
- package/.allhands/skills/harness-maintenance/SKILL.md +449 -0
- package/.allhands/skills/harness-maintenance/references/core-architecture.md +187 -0
- package/.allhands/skills/harness-maintenance/references/harness-skills.md +87 -0
- package/.allhands/skills/harness-maintenance/references/knowledge-compounding.md +78 -0
- package/.allhands/skills/harness-maintenance/references/tools-commands-mcp-hooks.md +115 -0
- package/.allhands/skills/harness-maintenance/references/validation-tooling.md +77 -0
- package/.allhands/skills/harness-maintenance/references/writing-flows.md +84 -0
- package/.allhands/validation/browser-automation.md +109 -0
- package/.allhands/validation/xcode-automation.md +195 -0
- package/.allhands/workflows/documentation.md +86 -0
- package/.allhands/workflows/investigation.md +81 -0
- package/.allhands/workflows/milestone.md +91 -0
- package/.allhands/workflows/optimization.md +85 -0
- package/.allhands/workflows/refactor.md +99 -0
- package/.allhands/workflows/triage.md +81 -0
- package/.claude/README.md +1 -0
- package/.claude/agents/explorer.md +10 -0
- package/.claude/agents/researcher.md +11 -0
- package/.claude/agents/task-runner.md +8 -0
- package/.claude/settings.json +231 -0
- package/.env.ai.example +7 -0
- package/.github/workflows/npm-publish.yml +69 -0
- package/.internal.json +45 -0
- package/.tldr/config.json +11 -0
- package/.tldrignore +90 -0
- package/CLAUDE.md +6 -0
- package/README.md +98 -0
- package/bin/sync-cli.js +7552 -0
- package/concerns.md +7 -0
- package/docs/README.md +41 -0
- package/docs/agents/README.md +24 -0
- package/docs/agents/agent-configuration-system.md +86 -0
- package/docs/agents/execution-agents.md +50 -0
- package/docs/agents/knowledge-agents.md +61 -0
- package/docs/agents/orchestration-agent.md +57 -0
- package/docs/agents/planning-agents.md +84 -0
- package/docs/agents/quality-review-agents.md +67 -0
- package/docs/agents/workflow-agent-orchestration.md +69 -0
- package/docs/flows/README.md +44 -0
- package/docs/flows/compounding.md +126 -0
- package/docs/flows/coordination.md +72 -0
- package/docs/flows/core-harness-integration.md +63 -0
- package/docs/flows/documentation-orchestration.md +98 -0
- package/docs/flows/e2e-test-plan-building.md +83 -0
- package/docs/flows/emergent-refinement.md +104 -0
- package/docs/flows/flow-authoring-and-mcp-tools.md +89 -0
- package/docs/flows/judge-reviewing.md +112 -0
- package/docs/flows/plan-deepening-and-research.md +107 -0
- package/docs/flows/plan-review-jury.md +114 -0
- package/docs/flows/pr-reviewing.md +54 -0
- package/docs/flows/prompt-task-execution.md +119 -0
- package/docs/flows/spec-planning.md +162 -0
- package/docs/flows/type-specific-scoping-flows.md +49 -0
- package/docs/flows/validation-and-skills-integration.md +145 -0
- package/docs/flows/wip/wip-flows.md +102 -0
- package/docs/harness/README.md +23 -0
- package/docs/harness/agent-profiles.md +84 -0
- package/docs/harness/cli/README.md +24 -0
- package/docs/harness/cli/cli-entry-and-command-discovery.md +91 -0
- package/docs/harness/cli/docs-command.md +87 -0
- package/docs/harness/cli/knowledge-command.md +91 -0
- package/docs/harness/cli/minor-cli-commands.md +65 -0
- package/docs/harness/cli/oracle-command.md +113 -0
- package/docs/harness/cli/planning-command.md +95 -0
- package/docs/harness/cli/schema-and-validation-commands.md +154 -0
- package/docs/harness/cli/search-commands.md +97 -0
- package/docs/harness/cli/spawn-command.md +136 -0
- package/docs/harness/cli/specs-command.md +102 -0
- package/docs/harness/cli/tools-command.md +122 -0
- package/docs/harness/cli/trace-command.md +122 -0
- package/docs/harness/cli-daemon.md +92 -0
- package/docs/harness/event-loop.md +184 -0
- package/docs/harness/hooks/README.md +15 -0
- package/docs/harness/hooks/context-hooks.md +96 -0
- package/docs/harness/hooks/lifecycle-and-observability-hooks.md +135 -0
- package/docs/harness/hooks/validation-hooks.md +97 -0
- package/docs/harness/test-harness.md +149 -0
- package/docs/harness/tui.md +176 -0
- package/docs/memories.md +20 -0
- package/docs/solutions/agentic-issues/premature-agent-deletion-tui-action-dependency-20260130.md +49 -0
- package/docs/solutions/agentic-issues/ref-anchor-scope-mismatch-skill-references-20260131.md +55 -0
- package/docs/solutions/agentic-issues/tautological-tests-routing-20260131.md +52 -0
- package/docs/solutions/integration_issue/blocktool-output-format-mismatch-hook-runner-20260130.md +52 -0
- package/docs/solutions/integration_issue/dual-validation-path-divergence-schema-20260130.md +66 -0
- package/docs/solutions/security-issues/unsanitized-domain-path-join-20260131.md +52 -0
- package/docs/solutions/test-failures/event-loop-mock-ordering-checkAgentWindows-20260130.md +63 -0
- package/docs/sync-cli/README.md +19 -0
- package/docs/sync-cli/cli-entrypoint-and-commands.md +39 -0
- package/docs/sync-cli/commands/README.md +11 -0
- package/docs/sync-cli/commands/pull-manifest-command.md +36 -0
- package/docs/sync-cli/commands/push-command.md +84 -0
- package/docs/sync-cli/commands/sync-command.md +71 -0
- package/docs/sync-cli/systems/README.md +14 -0
- package/docs/sync-cli/systems/git-and-github-integration.md +49 -0
- package/docs/sync-cli/systems/interactive-ui.md +43 -0
- package/docs/sync-cli/systems/manifest-and-distribution.md +51 -0
- package/docs/sync-cli/systems/path-resolution.md +42 -0
- package/package.json +46 -0
- package/scripts/install-shim.sh +40 -0
- package/scripts/pre-pack.sh +25 -0
- package/specs/harness-maintenance-skill.spec.md +138 -0
- package/specs/roadmap/git-spec-lifecycle-management.spec.md +113 -0
- package/specs/sync-init-flag.spec.md +117 -0
- package/specs/unified-workflow-orchestration.spec.md +250 -0
- package/specs/validation-tooling-practice.spec.md +98 -0
- package/specs/workflow-domain-configuration.spec.md +265 -0
- package/src/commands/pull-manifest.ts +31 -0
- package/src/commands/push.ts +344 -0
- package/src/commands/sync.ts +289 -0
- package/src/lib/constants.ts +10 -0
- package/src/lib/dotfiles.ts +36 -0
- package/src/lib/fs-utils.ts +18 -0
- package/src/lib/gh.ts +40 -0
- package/src/lib/git.ts +63 -0
- package/src/lib/gitignore.ts +167 -0
- package/src/lib/manifest.ts +121 -0
- package/src/lib/marker-sync.ts +39 -0
- package/src/lib/paths.ts +38 -0
- package/src/lib/target-lines.ts +66 -0
- package/src/lib/ui.ts +78 -0
- package/src/sync-cli.ts +120 -0
- package/target-lines.json +23 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<goal>
|
|
2
|
+
Review implementation for YAGNI (You Ain't Gonna Need It) violations. Per **Quality Engineering**, identify over-engineering that exceeds task requirements.
|
|
3
|
+
</goal>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- Git diff to base (implementation files)
|
|
7
|
+
- Alignment doc path (for engineer decisions)
|
|
8
|
+
- Prompts folder path (for task scope)
|
|
9
|
+
</inputs>
|
|
10
|
+
|
|
11
|
+
<outputs>
|
|
12
|
+
- YAGNI violations in implementation
|
|
13
|
+
- Simplification recommendations, ordered by priority
|
|
14
|
+
</outputs>
|
|
15
|
+
|
|
16
|
+
<constraints>
|
|
17
|
+
- MUST use git diff to base for implementation review
|
|
18
|
+
- MUST give leniency to explicit engineer decisions
|
|
19
|
+
- MUST still object to unnecessary complexity even post-planning decisions
|
|
20
|
+
- MUST distinguish agentic over-engineering from engineer-requested features
|
|
21
|
+
</constraints>
|
|
22
|
+
|
|
23
|
+
## Context Gathering
|
|
24
|
+
|
|
25
|
+
- Review all implementation changes from base branch
|
|
26
|
+
- Read prompt summaries for task scope
|
|
27
|
+
- Read alignment doc for engineer decisions
|
|
28
|
+
- Identify patch prompts and emergent prompts (post-planning decisions)
|
|
29
|
+
|
|
30
|
+
## YAGNI Detection in Implementation
|
|
31
|
+
|
|
32
|
+
Look for code that:
|
|
33
|
+
|
|
34
|
+
| Pattern | Description |
|
|
35
|
+
|---------|-------------|
|
|
36
|
+
| Beyond Scope | Implementation exceeds prompt tasks (note: `type: emergent` prompts explore extensions by design per **Quality Engineering** - YAGNI applies to implementation efficiency within the prompt, not to the emergent hypothesis itself) |
|
|
37
|
+
| Unused Code | Functions/classes not called anywhere |
|
|
38
|
+
| Over-Abstraction | Abstractions for single use cases |
|
|
39
|
+
| Feature Flags | Configuration for features not requested |
|
|
40
|
+
| Error Handling | Catching impossible error conditions |
|
|
41
|
+
| Premature Optimization | Performance work without proven need |
|
|
42
|
+
| Orphaned Artifacts | Files created but not wired into the system |
|
|
43
|
+
| Dead Exports | Functions exported but never imported |
|
|
44
|
+
| Defensive Overkill | Validation for scenarios that can't happen in internal code |
|
|
45
|
+
|
|
46
|
+
## Decision Source Tracking
|
|
47
|
+
|
|
48
|
+
| Source | Priority |
|
|
49
|
+
|--------|----------|
|
|
50
|
+
| Agentic over-reach | P1 - Agents often add unnecessary complexity |
|
|
51
|
+
| Post-planning engineer decision | P2 - Still offer perspective, lower priority |
|
|
52
|
+
| Original planning decision | P3 - Already reviewed, lowest priority |
|
|
53
|
+
|
|
54
|
+
## Review Process
|
|
55
|
+
|
|
56
|
+
For each implementation change:
|
|
57
|
+
- Was this in the prompt's task scope?
|
|
58
|
+
- Is this simpler than necessary?
|
|
59
|
+
- Does this exceed requirements?
|
|
60
|
+
- Who decided this (agent or engineer)?
|
|
61
|
+
|
|
62
|
+
## Output Format
|
|
63
|
+
|
|
64
|
+
Return findings ordered by priority:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
## YAGNI Implementation Review
|
|
68
|
+
|
|
69
|
+
### P1 (Agentic Over-Engineering)
|
|
70
|
+
- [File]: [What's unnecessary] -> [What was actually needed] -> [Remove/simplify]
|
|
71
|
+
|
|
72
|
+
### P2 (Exceeds Post-Planning Decisions)
|
|
73
|
+
- [File]: [What was added] -> [Beyond what engineer clarified] -> [Consider removing]
|
|
74
|
+
|
|
75
|
+
### P3 (Worth Reconsidering)
|
|
76
|
+
- [File]: [Engineer-decided but still YAGNI perspective] -> [Alternative if desired]
|
|
77
|
+
|
|
78
|
+
## Summary
|
|
79
|
+
- [Lines of unnecessary code]
|
|
80
|
+
- [Complexity hotspots]
|
|
81
|
+
- [Simplification opportunities]
|
|
82
|
+
```
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
<goal>
|
|
2
|
+
Structured investigation for complex bugs with unclear root causes. Per **Agentic Validation Tooling**, systematic debugging beats random exploration.
|
|
3
|
+
</goal>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- Symptom description (error message, unexpected behavior, failing test)
|
|
7
|
+
- Optional: suspected area of codebase
|
|
8
|
+
</inputs>
|
|
9
|
+
|
|
10
|
+
<outputs>
|
|
11
|
+
- Root cause identification with evidence
|
|
12
|
+
- Recommended fix approach
|
|
13
|
+
- Optional: prompt file for fix implementation
|
|
14
|
+
</outputs>
|
|
15
|
+
|
|
16
|
+
<constraints>
|
|
17
|
+
- MUST gather symptoms before hypothesizing
|
|
18
|
+
- MUST verify hypotheses with evidence before concluding
|
|
19
|
+
- MUST document investigation path for knowledge compounding
|
|
20
|
+
- NEVER guess at root cause without verification
|
|
21
|
+
</constraints>
|
|
22
|
+
|
|
23
|
+
## STATUS: Work In Progress
|
|
24
|
+
|
|
25
|
+
This flow is under development. Integration points with milestone workflow TBD.
|
|
26
|
+
|
|
27
|
+
Potential integration approaches:
|
|
28
|
+
1. Patch prompt type: `type: debug` prompts following this flow
|
|
29
|
+
2. Pre-implementation phase: When initial execution fails
|
|
30
|
+
3. Emergent debug: When emergent refinement hits blockers
|
|
31
|
+
4. Coordinator service: "Debug Investigation" option in COORDINATION.md
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Phase 1: Symptom Gathering
|
|
36
|
+
|
|
37
|
+
Collect all observable evidence:
|
|
38
|
+
|
|
39
|
+
| Evidence Type | How to Gather |
|
|
40
|
+
|---------------|---------------|
|
|
41
|
+
| Error messages | Exact text, stack traces |
|
|
42
|
+
| Reproduction steps | Minimal sequence to trigger |
|
|
43
|
+
| When it started | Recent commits, config changes |
|
|
44
|
+
| What changed | Git diff, dependency updates |
|
|
45
|
+
| Frequency | Always, intermittent, specific conditions |
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
symptoms:
|
|
49
|
+
error: "<exact error message>"
|
|
50
|
+
reproduction: ["<step 1>", "<step 2>", "..."]
|
|
51
|
+
frequency: always | intermittent | conditional
|
|
52
|
+
conditions: "<when it occurs>"
|
|
53
|
+
recent_changes: ["<commit>", "<config change>"]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Phase 2: Hypothesis Formation
|
|
57
|
+
|
|
58
|
+
Based on symptoms, form 2-3 ranked hypotheses:
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
hypotheses:
|
|
62
|
+
- id: H1
|
|
63
|
+
description: "<what you think is wrong>"
|
|
64
|
+
confidence: high | medium | low
|
|
65
|
+
evidence_for: ["<symptom that supports>"]
|
|
66
|
+
evidence_against: ["<symptom that contradicts>"]
|
|
67
|
+
verification_method: "<how to confirm/deny>"
|
|
68
|
+
|
|
69
|
+
- id: H2
|
|
70
|
+
description: "<alternative explanation>"
|
|
71
|
+
...
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Phase 3: Investigation
|
|
75
|
+
|
|
76
|
+
For each hypothesis (highest confidence first):
|
|
77
|
+
|
|
78
|
+
### 3.1 Targeted Search
|
|
79
|
+
|
|
80
|
+
- Read `.allhands/flows/shared/CODEBASE_UNDERSTANDING.md` for search approach
|
|
81
|
+
- Focus on areas suggested by hypothesis
|
|
82
|
+
- Use claim verification: read actual code before concluding
|
|
83
|
+
|
|
84
|
+
### 3.2 Evidence Collection
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
investigation:
|
|
88
|
+
hypothesis: H1
|
|
89
|
+
files_examined: ["<path>"]
|
|
90
|
+
findings:
|
|
91
|
+
- location: "file.ts:42"
|
|
92
|
+
observation: "<what you found>"
|
|
93
|
+
supports_hypothesis: true | false
|
|
94
|
+
conclusion: confirmed | refuted | inconclusive
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3.3 Iteration
|
|
98
|
+
|
|
99
|
+
If inconclusive:
|
|
100
|
+
- Refine hypothesis with new evidence
|
|
101
|
+
- Move to next hypothesis
|
|
102
|
+
- Expand search scope
|
|
103
|
+
|
|
104
|
+
## Phase 4: Root Cause Confirmation
|
|
105
|
+
|
|
106
|
+
Before declaring root cause:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
root_cause:
|
|
110
|
+
description: "<what's actually wrong>"
|
|
111
|
+
location: "file.ts:42"
|
|
112
|
+
evidence:
|
|
113
|
+
- "<specific finding 1>"
|
|
114
|
+
- "<specific finding 2>"
|
|
115
|
+
why_other_hypotheses_wrong:
|
|
116
|
+
H2: "<why H2 was not the cause>"
|
|
117
|
+
reproduction_confirmed: true
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Phase 5: Fix Recommendation
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
fix:
|
|
124
|
+
approach: "<how to fix>"
|
|
125
|
+
files_affected: ["<paths>"]
|
|
126
|
+
risk_level: low | medium | high
|
|
127
|
+
testing_approach: "<how to verify fix>"
|
|
128
|
+
regression_concerns: ["<what could break>"]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Phase 6: Documentation
|
|
132
|
+
|
|
133
|
+
For knowledge compounding:
|
|
134
|
+
|
|
135
|
+
### Investigation Summary (for prompt file)
|
|
136
|
+
```markdown
|
|
137
|
+
## Debug Investigation
|
|
138
|
+
|
|
139
|
+
**Symptom**: <brief description>
|
|
140
|
+
**Root Cause**: <what was wrong>
|
|
141
|
+
**Investigation Path**: H1 (refuted) → H2 (confirmed)
|
|
142
|
+
**Key Finding**: <location and evidence>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Common Debug Patterns
|
|
146
|
+
|
|
147
|
+
| Symptom Pattern | Likely Cause | First Check |
|
|
148
|
+
|-----------------|--------------|-------------|
|
|
149
|
+
| "Works locally, fails in CI" | Environment diff | Env vars, paths, deps |
|
|
150
|
+
| "Intermittent failures" | Race condition | Async timing, shared state |
|
|
151
|
+
| "Started after deploy" | Recent changes | Git diff from last working |
|
|
152
|
+
| "Only affects some users" | Data-dependent | User data differences |
|
|
153
|
+
| "Works sometimes on refresh" | Caching | Cache invalidation logic |
|
|
154
|
+
|
|
155
|
+
## Anti-Patterns to Avoid
|
|
156
|
+
|
|
157
|
+
| Anti-Pattern | Why It's Bad | Instead |
|
|
158
|
+
|--------------|--------------|---------|
|
|
159
|
+
| Shotgun debugging | Wastes time, creates noise | Form hypothesis first |
|
|
160
|
+
| Assuming error message is cause | Often symptom, not root | Trace back to origin |
|
|
161
|
+
| Skipping reproduction | Can't verify fix | Always reproduce first |
|
|
162
|
+
| Fixing without understanding | Creates new bugs | Understand before changing |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<goal>
|
|
2
|
+
Query the simple memory file for relevant learnings from past sessions. Per **Knowledge Compounding**, memories enable reuse of solutions without re-discovery.
|
|
3
|
+
</goal>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- Query keywords or domain
|
|
7
|
+
</inputs>
|
|
8
|
+
|
|
9
|
+
<outputs>
|
|
10
|
+
- Relevant memories with their domains and sources
|
|
11
|
+
</outputs>
|
|
12
|
+
|
|
13
|
+
<constraints>
|
|
14
|
+
- MUST use memories from `docs/memories.md` only
|
|
15
|
+
- MUST filter by domain relevance when provided
|
|
16
|
+
- NEVER fabricate memories - only return what exists in the file
|
|
17
|
+
</constraints>
|
|
18
|
+
|
|
19
|
+
## Memory File Format
|
|
20
|
+
|
|
21
|
+
The memory file uses a simple table format:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
| Name | Domain | Source | Description |
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- **Name**: Short identifier for the memory
|
|
28
|
+
- **Domain**: `planning`, `validation`, `implementation`, `harness-tooling`, `ideation`
|
|
29
|
+
- **Source**: `user-steering` (engineer directed) or `agent-inferred` (discovered during work)
|
|
30
|
+
- **Description**: 1-3 sentences of self-contained learning
|
|
31
|
+
|
|
32
|
+
## Recall Process
|
|
33
|
+
|
|
34
|
+
1. Read `docs/memories.md`
|
|
35
|
+
2. If domain filter provided, narrow to matching rows
|
|
36
|
+
3. Scan descriptions for keyword relevance
|
|
37
|
+
4. Return matching memories with context
|
|
38
|
+
|
|
39
|
+
## Usage Contexts
|
|
40
|
+
|
|
41
|
+
| Caller Flow | Query Focus |
|
|
42
|
+
|-------------|-------------|
|
|
43
|
+
| `SPEC_PLANNING.md` | Planning patterns, past decisions |
|
|
44
|
+
| `PROMPT_TASK_EXECUTION.md` | Implementation approaches, solutions |
|
|
45
|
+
| `IDEATION_SCOPING.md` | Similar initiatives, prior engineer preferences |
|
|
46
|
+
| `COMPOUNDING.md` | Verify memory doesn't already exist before adding |
|
|
47
|
+
|
|
48
|
+
## Relevance Scoring
|
|
49
|
+
|
|
50
|
+
Prioritize memories by:
|
|
51
|
+
1. **Domain match** - Same domain as current work
|
|
52
|
+
2. **Keyword overlap** - Description contains query terms
|
|
53
|
+
3. **Source authority** - `user-steering` > `agent-inferred` for preference-based queries
|
|
54
|
+
|
|
55
|
+
## Integration with Solutions
|
|
56
|
+
|
|
57
|
+
For more detailed technical solutions, also run:
|
|
58
|
+
```bash
|
|
59
|
+
ah solutions search "<keywords>"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Memories are lightweight learnings; solutions are detailed problem-solution documentation.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# all-hands: Agentic harness CLI for model-first software development
|
|
3
|
+
#
|
|
4
|
+
# This script provides the `ah` CLI entry point:
|
|
5
|
+
# - Auto-installs dependencies if missing
|
|
6
|
+
# - Loads environment from .env.ai
|
|
7
|
+
# - Routes hook commands through CLI daemon if TUI is running (fast path)
|
|
8
|
+
# - Falls back to TypeScript CLI via tsx (slow path)
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
# SCRIPT_DIR = .allhands/harness/
|
|
13
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
+
# ALLHANDS_DIR = .allhands/
|
|
15
|
+
ALLHANDS_DIR="$(dirname "$SCRIPT_DIR")"
|
|
16
|
+
# PROJECT_ROOT = parent of .allhands/
|
|
17
|
+
PROJECT_ROOT="$(dirname "$ALLHANDS_DIR")"
|
|
18
|
+
|
|
19
|
+
# Export project root so TypeScript code can resolve paths correctly
|
|
20
|
+
# even when the caller's cwd is different from the project directory.
|
|
21
|
+
# Preserves CLAUDE_PROJECT_DIR if already set by Claude Code.
|
|
22
|
+
export CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$PROJECT_ROOT}"
|
|
23
|
+
|
|
24
|
+
# Load .env.ai from project root if exists
|
|
25
|
+
if [ -f "$PROJECT_ROOT/.env.ai" ]; then
|
|
26
|
+
set -a
|
|
27
|
+
. "$PROJECT_ROOT/.env.ai"
|
|
28
|
+
set +a
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Also check git root for .env.ai (may be different in worktrees)
|
|
32
|
+
GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || echo "$PROJECT_ROOT")
|
|
33
|
+
if [ -f "$GIT_ROOT/.env.ai" ] && [ "$GIT_ROOT" != "$PROJECT_ROOT" ]; then
|
|
34
|
+
set -a
|
|
35
|
+
. "$GIT_ROOT/.env.ai"
|
|
36
|
+
set +a
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Auto-install if node_modules missing or package.json changed
|
|
40
|
+
if [ ! -d "$SCRIPT_DIR/node_modules" ] || ! cmp -s "$SCRIPT_DIR/package.json" "$SCRIPT_DIR/node_modules/.package.json.cache" 2>/dev/null; then
|
|
41
|
+
echo "Installing/updating allhands dependencies..." >&2
|
|
42
|
+
if ! npm install --prefix "$SCRIPT_DIR" --legacy-peer-deps 2>/dev/null; then
|
|
43
|
+
echo "ERROR: npm install failed for allhands CLI" >&2
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
cp "$SCRIPT_DIR/package.json" "$SCRIPT_DIR/node_modules/.package.json.cache" 2>/dev/null || true
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# CLI daemon socket path
|
|
50
|
+
DAEMON_SOCKET="$SCRIPT_DIR/.cache/cli-daemon.sock"
|
|
51
|
+
SETTINGS_FILE="$ALLHANDS_DIR/settings.json"
|
|
52
|
+
|
|
53
|
+
# Check if daemon is enabled in settings (default: true)
|
|
54
|
+
DAEMON_ENABLED=true
|
|
55
|
+
if [ -f "$SETTINGS_FILE" ]; then
|
|
56
|
+
# Check daemon.enabled in settings.json using jq if available
|
|
57
|
+
if command -v jq >/dev/null 2>&1; then
|
|
58
|
+
# Use explicit check since jq's // operator treats false as falsy
|
|
59
|
+
if [ "$(jq -r 'if .daemon.enabled == false then "false" else "true" end' "$SETTINGS_FILE" 2>/dev/null)" = "false" ]; then
|
|
60
|
+
DAEMON_ENABLED=false
|
|
61
|
+
fi
|
|
62
|
+
else
|
|
63
|
+
# Fallback: look for "daemon".*"enabled": false pattern
|
|
64
|
+
if grep -zoP '"daemon"\s*:\s*\{[^}]*"enabled"\s*:\s*false' "$SETTINGS_FILE" >/dev/null 2>&1; then
|
|
65
|
+
DAEMON_ENABLED=false
|
|
66
|
+
fi
|
|
67
|
+
fi
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# Fast path: Route hook commands through daemon if enabled and socket exists
|
|
71
|
+
# Format: ah hooks <category> <name> (e.g., ah hooks context tldr-inject)
|
|
72
|
+
#
|
|
73
|
+
# Use DISABLE_DAEMON=true to force slow path for hooks that need agent env vars
|
|
74
|
+
# (e.g., lifecycle hooks need PROMPT_SCOPED, AGENT_ID which daemon doesn't have)
|
|
75
|
+
if [ "$1" = "hooks" ] && [ "$DAEMON_ENABLED" = "true" ] && [ -S "$DAEMON_SOCKET" ] && [ "$DISABLE_DAEMON" != "true" ]; then
|
|
76
|
+
CATEGORY="$2"
|
|
77
|
+
NAME="$3"
|
|
78
|
+
|
|
79
|
+
if [ -n "$CATEGORY" ] && [ -n "$NAME" ]; then
|
|
80
|
+
# Mark this as a daemon-routed execution
|
|
81
|
+
export AH_VIA_DAEMON=1
|
|
82
|
+
|
|
83
|
+
# Read stdin (hook input JSON)
|
|
84
|
+
INPUT=$(cat)
|
|
85
|
+
|
|
86
|
+
# Build daemon command (use quoted default to avoid bash expansion issue with braces)
|
|
87
|
+
CMD=$(printf '{"cmd":"hook","category":"%s","name":"%s","input":%s}\n' "$CATEGORY" "$NAME" "${INPUT:-"{}"}")
|
|
88
|
+
|
|
89
|
+
# Send to daemon via nc (netcat)
|
|
90
|
+
# Use || true to prevent set -e from exiting on nc failure (stale socket)
|
|
91
|
+
NC_OK=0
|
|
92
|
+
RESPONSE=$(printf '%s' "$CMD" | nc -U "$DAEMON_SOCKET" 2>/dev/null) || NC_OK=$?
|
|
93
|
+
|
|
94
|
+
if [ $NC_OK -eq 0 ] && [ -n "$RESPONSE" ]; then
|
|
95
|
+
# Parse response using jq for proper JSON handling
|
|
96
|
+
if command -v jq >/dev/null 2>&1; then
|
|
97
|
+
SUCCESS=$(echo "$RESPONSE" | jq -r '.success // false' 2>/dev/null)
|
|
98
|
+
OUTPUT=$(echo "$RESPONSE" | jq -r '.output // empty' 2>/dev/null)
|
|
99
|
+
|
|
100
|
+
if [ "$SUCCESS" = "true" ]; then
|
|
101
|
+
if [ -n "$OUTPUT" ]; then
|
|
102
|
+
echo "$OUTPUT"
|
|
103
|
+
fi
|
|
104
|
+
exit 0
|
|
105
|
+
fi
|
|
106
|
+
else
|
|
107
|
+
# Fallback: basic parsing for simple outputs (may fail on complex JSON)
|
|
108
|
+
OUTPUT=$(echo "$RESPONSE" | sed -n 's/.*"output":"\([^"]*\)".*/\1/p')
|
|
109
|
+
if [ -n "$OUTPUT" ]; then
|
|
110
|
+
echo "$OUTPUT" | sed 's/\\n/\n/g; s/\\"/"/g'
|
|
111
|
+
exit 0
|
|
112
|
+
fi
|
|
113
|
+
if echo "$RESPONSE" | grep -q '"success":true'; then
|
|
114
|
+
exit 0
|
|
115
|
+
fi
|
|
116
|
+
fi
|
|
117
|
+
fi
|
|
118
|
+
# Fall through to slow path if daemon failed
|
|
119
|
+
fi
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
# Slow path: Use tsx for direct TypeScript execution
|
|
123
|
+
# If daemon path was entered but failed, $INPUT holds the consumed stdin - replay it
|
|
124
|
+
if [ -n "$INPUT" ]; then
|
|
125
|
+
# Daemon path was entered but failed - replay consumed stdin
|
|
126
|
+
# Use printf to avoid echo interpreting escape sequences in JSON
|
|
127
|
+
printf '%s' "$INPUT" | "$SCRIPT_DIR/node_modules/.bin/tsx" "$SCRIPT_DIR/src/cli.ts" "$@"
|
|
128
|
+
else
|
|
129
|
+
# Normal slow path - stdin is still available
|
|
130
|
+
exec "$SCRIPT_DIR/node_modules/.bin/tsx" "$SCRIPT_DIR/src/cli.ts" "$@"
|
|
131
|
+
fi
|