autonomous-coding-toolkit 1.0.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/.claude-plugin/marketplace.json +22 -0
- package/.claude-plugin/plugin.json +13 -0
- package/LICENSE +21 -0
- package/Makefile +21 -0
- package/README.md +140 -0
- package/SECURITY.md +28 -0
- package/agents/bash-expert.md +113 -0
- package/agents/dependency-auditor.md +138 -0
- package/agents/integration-tester.md +120 -0
- package/agents/lesson-scanner.md +149 -0
- package/agents/python-expert.md +179 -0
- package/agents/service-monitor.md +141 -0
- package/agents/shell-expert.md +147 -0
- package/benchmarks/runner.sh +147 -0
- package/benchmarks/tasks/01-rest-endpoint/rubric.sh +29 -0
- package/benchmarks/tasks/01-rest-endpoint/task.md +17 -0
- package/benchmarks/tasks/02-refactor-module/task.md +8 -0
- package/benchmarks/tasks/03-fix-integration-bug/task.md +8 -0
- package/benchmarks/tasks/04-add-test-coverage/task.md +8 -0
- package/benchmarks/tasks/05-multi-file-feature/task.md +8 -0
- package/bin/act.js +238 -0
- package/commands/autocode.md +6 -0
- package/commands/cancel-ralph.md +18 -0
- package/commands/code-factory.md +53 -0
- package/commands/create-prd.md +55 -0
- package/commands/ralph-loop.md +18 -0
- package/commands/run-plan.md +117 -0
- package/commands/submit-lesson.md +122 -0
- package/docs/ARCHITECTURE.md +630 -0
- package/docs/CONTRIBUTING.md +125 -0
- package/docs/lessons/0001-bare-exception-swallowing.md +34 -0
- package/docs/lessons/0002-async-def-without-await.md +28 -0
- package/docs/lessons/0003-create-task-without-callback.md +28 -0
- package/docs/lessons/0004-hardcoded-test-counts.md +28 -0
- package/docs/lessons/0005-sqlite-without-closing.md +33 -0
- package/docs/lessons/0006-venv-pip-path.md +27 -0
- package/docs/lessons/0007-runner-state-self-rejection.md +35 -0
- package/docs/lessons/0008-quality-gate-blind-spot.md +33 -0
- package/docs/lessons/0009-parser-overcount-empty-batches.md +36 -0
- package/docs/lessons/0010-local-outside-function-bash.md +33 -0
- package/docs/lessons/0011-batch-tests-for-unimplemented-code.md +36 -0
- package/docs/lessons/0012-api-markdown-unescaped-chars.md +33 -0
- package/docs/lessons/0013-export-prefix-env-parsing.md +33 -0
- package/docs/lessons/0014-decorator-registry-import-side-effect.md +43 -0
- package/docs/lessons/0015-frontend-backend-schema-drift.md +43 -0
- package/docs/lessons/0016-event-driven-cold-start-seeding.md +44 -0
- package/docs/lessons/0017-copy-paste-logic-diverges.md +43 -0
- package/docs/lessons/0018-layer-passes-pipeline-broken.md +45 -0
- package/docs/lessons/0019-systemd-envfile-ignores-export.md +41 -0
- package/docs/lessons/0020-persist-state-incrementally.md +44 -0
- package/docs/lessons/0021-dual-axis-testing.md +48 -0
- package/docs/lessons/0022-jsx-factory-shadowing.md +43 -0
- package/docs/lessons/0023-static-analysis-spiral.md +51 -0
- package/docs/lessons/0024-shared-pipeline-implementation.md +55 -0
- package/docs/lessons/0025-defense-in-depth-all-entry-points.md +65 -0
- package/docs/lessons/0026-linter-no-rules-false-enforcement.md +54 -0
- package/docs/lessons/0027-jsx-silent-prop-drop.md +64 -0
- package/docs/lessons/0028-no-infrastructure-in-client-code.md +49 -0
- package/docs/lessons/0029-never-write-secrets-to-files.md +61 -0
- package/docs/lessons/0030-cache-merge-not-replace.md +62 -0
- package/docs/lessons/0031-verify-units-at-boundaries.md +66 -0
- package/docs/lessons/0032-module-lifecycle-subscribe-unsubscribe.md +89 -0
- package/docs/lessons/0033-async-iteration-mutable-snapshot.md +72 -0
- package/docs/lessons/0034-caller-missing-await-silent-discard.md +65 -0
- package/docs/lessons/0035-duplicate-registration-silent-overwrite.md +85 -0
- package/docs/lessons/0036-websocket-dirty-disconnect.md +33 -0
- package/docs/lessons/0037-parallel-agents-worktree-corruption.md +31 -0
- package/docs/lessons/0038-subscribe-no-stored-ref.md +36 -0
- package/docs/lessons/0039-fallback-or-default-hides-bugs.md +34 -0
- package/docs/lessons/0040-event-firehose-filter-first.md +36 -0
- package/docs/lessons/0041-ambiguous-base-dir-path-nesting.md +32 -0
- package/docs/lessons/0042-spec-compliance-insufficient.md +36 -0
- package/docs/lessons/0043-exact-count-extensible-collections.md +32 -0
- package/docs/lessons/0044-relative-file-deps-worktree.md +39 -0
- package/docs/lessons/0045-iterative-design-improvement.md +33 -0
- package/docs/lessons/0046-plan-assertion-math-bugs.md +38 -0
- package/docs/lessons/0047-pytest-single-threaded-default.md +37 -0
- package/docs/lessons/0048-integration-wiring-batch.md +40 -0
- package/docs/lessons/0049-ab-verification.md +41 -0
- package/docs/lessons/0050-editing-sourced-files-during-execution.md +33 -0
- package/docs/lessons/0051-infrastructure-fixes-cant-self-heal.md +30 -0
- package/docs/lessons/0052-uncommitted-changes-poison-quality-gates.md +31 -0
- package/docs/lessons/0053-jq-compact-flag-inconsistency.md +31 -0
- package/docs/lessons/0054-parser-matches-inside-code-blocks.md +30 -0
- package/docs/lessons/0055-agents-compensate-for-garbled-prompts.md +31 -0
- package/docs/lessons/0056-grep-count-exit-code-on-zero.md +42 -0
- package/docs/lessons/0057-new-artifacts-break-git-clean-gates.md +42 -0
- package/docs/lessons/0058-dead-config-keys-never-consumed.md +49 -0
- package/docs/lessons/0059-contract-test-shared-structures.md +53 -0
- package/docs/lessons/0060-set-e-silent-death-in-runners.md +53 -0
- package/docs/lessons/0061-context-injection-dirty-state.md +50 -0
- package/docs/lessons/0062-sibling-bug-neighborhood-scan.md +29 -0
- package/docs/lessons/0063-one-flag-two-lifetimes.md +31 -0
- package/docs/lessons/0064-test-passes-wrong-reason.md +31 -0
- package/docs/lessons/0065-pipefail-grep-count-double-output.md +39 -0
- package/docs/lessons/0066-local-keyword-outside-function.md +37 -0
- package/docs/lessons/0067-stdin-hang-non-interactive-shell.md +36 -0
- package/docs/lessons/0068-agent-builds-wrong-thing-correctly.md +31 -0
- package/docs/lessons/0069-plan-quality-dominates-execution.md +30 -0
- package/docs/lessons/0070-spec-echo-back-prevents-drift.md +31 -0
- package/docs/lessons/0071-positive-instructions-outperform-negative.md +30 -0
- package/docs/lessons/0072-lost-in-the-middle-context-placement.md +30 -0
- package/docs/lessons/0073-unscoped-lessons-cause-false-positives.md +30 -0
- package/docs/lessons/0074-stale-context-injection-wrong-batch.md +32 -0
- package/docs/lessons/0075-research-artifacts-must-persist.md +32 -0
- package/docs/lessons/0076-wrong-decomposition-contaminates-downstream.md +30 -0
- package/docs/lessons/0077-cherry-pick-merges-need-manual-resolution.md +30 -0
- package/docs/lessons/0078-static-review-without-live-test.md +30 -0
- package/docs/lessons/0079-integration-wiring-batch-required.md +32 -0
- package/docs/lessons/FRAMEWORK.md +161 -0
- package/docs/lessons/SUMMARY.md +201 -0
- package/docs/lessons/TEMPLATE.md +85 -0
- package/docs/plans/2026-02-21-code-factory-v2-design.md +204 -0
- package/docs/plans/2026-02-21-code-factory-v2-implementation-plan.md +2189 -0
- package/docs/plans/2026-02-21-code-factory-v2-phase4-design.md +537 -0
- package/docs/plans/2026-02-21-code-factory-v2-phase4-implementation-plan.md +2012 -0
- package/docs/plans/2026-02-21-hardening-pass-design.md +108 -0
- package/docs/plans/2026-02-21-hardening-pass-plan.md +1378 -0
- package/docs/plans/2026-02-21-mab-research-report.md +406 -0
- package/docs/plans/2026-02-21-marketplace-restructure-design.md +240 -0
- package/docs/plans/2026-02-21-marketplace-restructure-plan.md +832 -0
- package/docs/plans/2026-02-21-phase4-completion-plan.md +697 -0
- package/docs/plans/2026-02-21-validator-suite-design.md +148 -0
- package/docs/plans/2026-02-21-validator-suite-plan.md +540 -0
- package/docs/plans/2026-02-22-mab-research-round2.md +556 -0
- package/docs/plans/2026-02-22-mab-run-design.md +462 -0
- package/docs/plans/2026-02-22-mab-run-plan.md +2046 -0
- package/docs/plans/2026-02-22-operations-design-methodology-research.md +681 -0
- package/docs/plans/2026-02-22-research-agent-failure-taxonomy.md +532 -0
- package/docs/plans/2026-02-22-research-code-guideline-policies.md +886 -0
- package/docs/plans/2026-02-22-research-codebase-audit-refactoring.md +908 -0
- package/docs/plans/2026-02-22-research-coding-standards-documentation.md +541 -0
- package/docs/plans/2026-02-22-research-competitive-landscape.md +687 -0
- package/docs/plans/2026-02-22-research-comprehensive-testing.md +1076 -0
- package/docs/plans/2026-02-22-research-context-utilization.md +459 -0
- package/docs/plans/2026-02-22-research-cost-quality-tradeoff.md +548 -0
- package/docs/plans/2026-02-22-research-lesson-transferability.md +508 -0
- package/docs/plans/2026-02-22-research-multi-agent-coordination.md +312 -0
- package/docs/plans/2026-02-22-research-phase-integration.md +602 -0
- package/docs/plans/2026-02-22-research-plan-quality.md +428 -0
- package/docs/plans/2026-02-22-research-prompt-engineering.md +558 -0
- package/docs/plans/2026-02-22-research-unconventional-perspectives.md +528 -0
- package/docs/plans/2026-02-22-research-user-adoption.md +638 -0
- package/docs/plans/2026-02-22-research-verification-effectiveness.md +433 -0
- package/docs/plans/2026-02-23-agent-suite-design.md +299 -0
- package/docs/plans/2026-02-23-agent-suite-plan.md +578 -0
- package/docs/plans/2026-02-23-phase3-cost-infrastructure-design.md +148 -0
- package/docs/plans/2026-02-23-phase3-cost-infrastructure-plan.md +1062 -0
- package/docs/plans/2026-02-23-research-bash-expert-agent.md +543 -0
- package/docs/plans/2026-02-23-research-dependency-auditor-agent.md +564 -0
- package/docs/plans/2026-02-23-research-improving-existing-agents.md +503 -0
- package/docs/plans/2026-02-23-research-integration-tester-agent.md +454 -0
- package/docs/plans/2026-02-23-research-python-expert-agent.md +429 -0
- package/docs/plans/2026-02-23-research-service-monitor-agent.md +425 -0
- package/docs/plans/2026-02-23-research-shell-expert-agent.md +533 -0
- package/docs/plans/2026-02-23-roadmap-to-completion.md +530 -0
- package/docs/plans/2026-02-24-headless-module-split-design.md +98 -0
- package/docs/plans/2026-02-24-headless-module-split.md +443 -0
- package/docs/plans/2026-02-24-lesson-scope-metadata-design.md +228 -0
- package/docs/plans/2026-02-24-lesson-scope-metadata-plan.md +968 -0
- package/docs/plans/2026-02-24-npm-packaging-design.md +841 -0
- package/docs/plans/2026-02-24-npm-packaging-plan.md +1965 -0
- package/docs/plans/audit-findings.md +186 -0
- package/docs/telegram-notification-format.md +98 -0
- package/examples/example-plan.md +51 -0
- package/examples/example-prd.json +72 -0
- package/examples/example-roadmap.md +33 -0
- package/examples/quickstart-plan.md +63 -0
- package/hooks/hooks.json +26 -0
- package/hooks/setup-symlinks.sh +48 -0
- package/hooks/stop-hook.sh +135 -0
- package/package.json +47 -0
- package/policies/bash.md +71 -0
- package/policies/python.md +71 -0
- package/policies/testing.md +61 -0
- package/policies/universal.md +60 -0
- package/scripts/analyze-report.sh +97 -0
- package/scripts/architecture-map.sh +145 -0
- package/scripts/auto-compound.sh +273 -0
- package/scripts/batch-audit.sh +42 -0
- package/scripts/batch-test.sh +101 -0
- package/scripts/entropy-audit.sh +221 -0
- package/scripts/failure-digest.sh +51 -0
- package/scripts/generate-ast-rules.sh +96 -0
- package/scripts/init.sh +112 -0
- package/scripts/lesson-check.sh +428 -0
- package/scripts/lib/common.sh +61 -0
- package/scripts/lib/cost-tracking.sh +153 -0
- package/scripts/lib/ollama.sh +60 -0
- package/scripts/lib/progress-writer.sh +128 -0
- package/scripts/lib/run-plan-context.sh +215 -0
- package/scripts/lib/run-plan-echo-back.sh +231 -0
- package/scripts/lib/run-plan-headless.sh +396 -0
- package/scripts/lib/run-plan-notify.sh +57 -0
- package/scripts/lib/run-plan-parser.sh +81 -0
- package/scripts/lib/run-plan-prompt.sh +215 -0
- package/scripts/lib/run-plan-quality-gate.sh +132 -0
- package/scripts/lib/run-plan-routing.sh +315 -0
- package/scripts/lib/run-plan-sampling.sh +170 -0
- package/scripts/lib/run-plan-scoring.sh +146 -0
- package/scripts/lib/run-plan-state.sh +142 -0
- package/scripts/lib/run-plan-team.sh +199 -0
- package/scripts/lib/telegram.sh +54 -0
- package/scripts/lib/thompson-sampling.sh +176 -0
- package/scripts/license-check.sh +74 -0
- package/scripts/mab-run.sh +575 -0
- package/scripts/module-size-check.sh +146 -0
- package/scripts/patterns/async-no-await.yml +5 -0
- package/scripts/patterns/bare-except.yml +6 -0
- package/scripts/patterns/empty-catch.yml +6 -0
- package/scripts/patterns/hardcoded-localhost.yml +9 -0
- package/scripts/patterns/retry-loop-no-backoff.yml +12 -0
- package/scripts/pipeline-status.sh +197 -0
- package/scripts/policy-check.sh +226 -0
- package/scripts/prior-art-search.sh +133 -0
- package/scripts/promote-mab-lessons.sh +126 -0
- package/scripts/prompts/agent-a-superpowers.md +29 -0
- package/scripts/prompts/agent-b-ralph.md +29 -0
- package/scripts/prompts/judge-agent.md +61 -0
- package/scripts/prompts/planner-agent.md +44 -0
- package/scripts/pull-community-lessons.sh +90 -0
- package/scripts/quality-gate.sh +266 -0
- package/scripts/research-gate.sh +90 -0
- package/scripts/run-plan.sh +329 -0
- package/scripts/scope-infer.sh +159 -0
- package/scripts/setup-ralph-loop.sh +155 -0
- package/scripts/telemetry.sh +230 -0
- package/scripts/tests/run-all-tests.sh +52 -0
- package/scripts/tests/test-act-cli.sh +46 -0
- package/scripts/tests/test-agents-md.sh +87 -0
- package/scripts/tests/test-analyze-report.sh +114 -0
- package/scripts/tests/test-architecture-map.sh +89 -0
- package/scripts/tests/test-auto-compound.sh +169 -0
- package/scripts/tests/test-batch-test.sh +65 -0
- package/scripts/tests/test-benchmark-runner.sh +25 -0
- package/scripts/tests/test-common.sh +168 -0
- package/scripts/tests/test-cost-tracking.sh +158 -0
- package/scripts/tests/test-echo-back.sh +180 -0
- package/scripts/tests/test-entropy-audit.sh +146 -0
- package/scripts/tests/test-failure-digest.sh +66 -0
- package/scripts/tests/test-generate-ast-rules.sh +145 -0
- package/scripts/tests/test-helpers.sh +82 -0
- package/scripts/tests/test-init.sh +47 -0
- package/scripts/tests/test-lesson-check.sh +278 -0
- package/scripts/tests/test-lesson-local.sh +55 -0
- package/scripts/tests/test-license-check.sh +109 -0
- package/scripts/tests/test-mab-run.sh +182 -0
- package/scripts/tests/test-ollama-lib.sh +49 -0
- package/scripts/tests/test-ollama.sh +60 -0
- package/scripts/tests/test-pipeline-status.sh +198 -0
- package/scripts/tests/test-policy-check.sh +124 -0
- package/scripts/tests/test-prior-art-search.sh +96 -0
- package/scripts/tests/test-progress-writer.sh +140 -0
- package/scripts/tests/test-promote-mab-lessons.sh +110 -0
- package/scripts/tests/test-pull-community-lessons.sh +149 -0
- package/scripts/tests/test-quality-gate.sh +241 -0
- package/scripts/tests/test-research-gate.sh +132 -0
- package/scripts/tests/test-run-plan-cli.sh +86 -0
- package/scripts/tests/test-run-plan-context.sh +305 -0
- package/scripts/tests/test-run-plan-e2e.sh +153 -0
- package/scripts/tests/test-run-plan-headless.sh +424 -0
- package/scripts/tests/test-run-plan-notify.sh +124 -0
- package/scripts/tests/test-run-plan-parser.sh +217 -0
- package/scripts/tests/test-run-plan-prompt.sh +254 -0
- package/scripts/tests/test-run-plan-quality-gate.sh +222 -0
- package/scripts/tests/test-run-plan-routing.sh +178 -0
- package/scripts/tests/test-run-plan-scoring.sh +148 -0
- package/scripts/tests/test-run-plan-state.sh +261 -0
- package/scripts/tests/test-run-plan-team.sh +157 -0
- package/scripts/tests/test-scope-infer.sh +150 -0
- package/scripts/tests/test-setup-ralph-loop.sh +63 -0
- package/scripts/tests/test-telegram-env.sh +38 -0
- package/scripts/tests/test-telegram.sh +121 -0
- package/scripts/tests/test-telemetry.sh +46 -0
- package/scripts/tests/test-thompson-sampling.sh +139 -0
- package/scripts/tests/test-validate-all.sh +60 -0
- package/scripts/tests/test-validate-commands.sh +89 -0
- package/scripts/tests/test-validate-hooks.sh +98 -0
- package/scripts/tests/test-validate-lessons.sh +150 -0
- package/scripts/tests/test-validate-plan-quality.sh +235 -0
- package/scripts/tests/test-validate-plans.sh +187 -0
- package/scripts/tests/test-validate-plugin.sh +106 -0
- package/scripts/tests/test-validate-prd.sh +184 -0
- package/scripts/tests/test-validate-skills.sh +134 -0
- package/scripts/validate-all.sh +57 -0
- package/scripts/validate-commands.sh +67 -0
- package/scripts/validate-hooks.sh +89 -0
- package/scripts/validate-lessons.sh +98 -0
- package/scripts/validate-plan-quality.sh +369 -0
- package/scripts/validate-plans.sh +120 -0
- package/scripts/validate-plugin.sh +86 -0
- package/scripts/validate-policies.sh +42 -0
- package/scripts/validate-prd.sh +118 -0
- package/scripts/validate-skills.sh +96 -0
- package/skills/autocode/SKILL.md +285 -0
- package/skills/autocode/ab-verification.md +51 -0
- package/skills/autocode/code-quality-standards.md +37 -0
- package/skills/autocode/competitive-mode.md +364 -0
- package/skills/brainstorming/SKILL.md +97 -0
- package/skills/capture-lesson/SKILL.md +187 -0
- package/skills/check-lessons/SKILL.md +116 -0
- package/skills/dispatching-parallel-agents/SKILL.md +110 -0
- package/skills/executing-plans/SKILL.md +85 -0
- package/skills/finishing-a-development-branch/SKILL.md +201 -0
- package/skills/receiving-code-review/SKILL.md +72 -0
- package/skills/requesting-code-review/SKILL.md +59 -0
- package/skills/requesting-code-review/code-reviewer.md +82 -0
- package/skills/research/SKILL.md +145 -0
- package/skills/roadmap/SKILL.md +115 -0
- package/skills/subagent-driven-development/SKILL.md +98 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +18 -0
- package/skills/subagent-driven-development/implementer-prompt.md +73 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +57 -0
- package/skills/systematic-debugging/SKILL.md +134 -0
- package/skills/systematic-debugging/condition-based-waiting.md +64 -0
- package/skills/systematic-debugging/defense-in-depth.md +32 -0
- package/skills/systematic-debugging/root-cause-tracing.md +55 -0
- package/skills/test-driven-development/SKILL.md +167 -0
- package/skills/using-git-worktrees/SKILL.md +219 -0
- package/skills/using-superpowers/SKILL.md +54 -0
- package/skills/verification-before-completion/SKILL.md +140 -0
- package/skills/verify/SKILL.md +82 -0
- package/skills/writing-plans/SKILL.md +128 -0
- package/skills/writing-skills/SKILL.md +93 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Hardening Pass Audit Findings
|
|
2
|
+
|
|
3
|
+
> Generated: 2026-02-21 | Batches 1-2 of hardening pass
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Shellcheck Findings
|
|
8
|
+
|
|
9
|
+
### Notes (SC1091 — source not followed)
|
|
10
|
+
|
|
11
|
+
These are informational — shellcheck can't follow relative `source` paths without `-x` flag. Not actionable.
|
|
12
|
+
|
|
13
|
+
| File | Line | Code | Description | Disposition |
|
|
14
|
+
|------|------|------|-------------|-------------|
|
|
15
|
+
| `scripts/run-plan.sh` | 17 | SC1091 | Not following: `./lib/run-plan-parser.sh` | SUPPRESS — relative source, use `-x` flag |
|
|
16
|
+
| `scripts/run-plan.sh` | 18 | SC1091 | Not following: `./lib/run-plan-state.sh` | SUPPRESS — same |
|
|
17
|
+
| `scripts/run-plan.sh` | 19 | SC1091 | Not following: `./lib/run-plan-quality-gate.sh` | SUPPRESS — same |
|
|
18
|
+
| `scripts/run-plan.sh` | 20 | SC1091 | Not following: `./lib/run-plan-notify.sh` | SUPPRESS — same |
|
|
19
|
+
| `scripts/run-plan.sh` | 21 | SC1091 | Not following: `./lib/run-plan-prompt.sh` | SUPPRESS — same |
|
|
20
|
+
|
|
21
|
+
### Warnings
|
|
22
|
+
|
|
23
|
+
| File | Line | Code | Description | Disposition |
|
|
24
|
+
|------|------|------|-------------|-------------|
|
|
25
|
+
| `scripts/run-plan.sh` | 111 | SC2034 | `COMPETITIVE_BATCHES` appears unused | SUPPRESS — used by sourced lib modules |
|
|
26
|
+
| `scripts/run-plan.sh` | 123 | SC2034 | `MAX_BUDGET` appears unused | SUPPRESS — used by sourced lib modules |
|
|
27
|
+
| `scripts/run-plan.sh` | 305 | SC1007 | Remove space after `=` in `CLAUDECODE= claude` | SUPPRESS — intentional: unsetting env var for subcommand |
|
|
28
|
+
| `scripts/lesson-check.sh` | 20 | SC2034 | `lesson_severity` appears unused | FIX — either use it or remove from parse output |
|
|
29
|
+
| `scripts/entropy-audit.sh` | 28 | SC2034 | `FIX_MODE` appears unused | FIX — parsed but never checked; add `--fix` implementation or remove |
|
|
30
|
+
| `scripts/lib/run-plan-quality-gate.sh` | 65 | SC2034 | `passed` appears unused | FIX — declared but never read |
|
|
31
|
+
|
|
32
|
+
### Info/Style
|
|
33
|
+
|
|
34
|
+
| File | Line | Code | Description | Disposition |
|
|
35
|
+
|------|------|------|-------------|-------------|
|
|
36
|
+
| `scripts/setup-ralph-loop.sh` | 112 | SC2086 | Double quote to prevent globbing/word splitting: `$MAX_ITERATIONS` | FIX — quote variable |
|
|
37
|
+
| `scripts/auto-compound.sh` | 73 | SC2012 | Use `find` instead of `ls` for non-alphanumeric filenames | FIX — replace `ls -t` with `find`+`sort` |
|
|
38
|
+
| `scripts/entropy-audit.sh` | 73 | SC2016 | Expressions don't expand in single quotes | SUPPRESS — intentional: regex pattern uses literal `$` |
|
|
39
|
+
| `scripts/entropy-audit.sh` | 201 | SC2016 | Expressions don't expand in single quotes | SUPPRESS — same, grep pattern with literal backticks |
|
|
40
|
+
| `scripts/entropy-audit.sh` | 214 | SC2012 | Use `find` instead of `ls` | FIX — replace `ls` with `find` |
|
|
41
|
+
| `scripts/lib/run-plan-parser.sh` | 32 | SC2295 | Expansions inside `${..}` need separate quoting | FIX — quote inner expansion |
|
|
42
|
+
| `hooks/stop-hook.sh` | 78 | SC2181 | Check exit code directly instead of `$?` | FIX — restructure to `if ! cmd; then` |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Summary
|
|
47
|
+
|
|
48
|
+
| Severity | Total | FIX | SUPPRESS |
|
|
49
|
+
|----------|-------|-----|----------|
|
|
50
|
+
| Note (SC1091 source) | 5 | 0 | 5 |
|
|
51
|
+
| Warning | 6 | 3 | 3 |
|
|
52
|
+
| Info/Style | 7 | 5 | 2 |
|
|
53
|
+
| **Total** | **18** | **8** | **10** |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Lesson Scanner Results
|
|
58
|
+
|
|
59
|
+
### lesson-check.sh against shell scripts
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Target: scripts/*.sh, scripts/lib/*.sh, hooks/stop-hook.sh (15 files)
|
|
63
|
+
Result: lesson-check: clean
|
|
64
|
+
Exit code: 0
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
All shell scripts pass — expected since lessons target Python/JS patterns.
|
|
68
|
+
|
|
69
|
+
### lesson-check.sh against Python/JS/TS files
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Target: find . -name "*.py" -o -name "*.js" -o -name "*.ts"
|
|
73
|
+
Result: No matching files found
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
This is a pure bash toolkit — no Python/JS/TS source files exist. Lesson scanner has no applicable targets.
|
|
77
|
+
|
|
78
|
+
### Conclusion
|
|
79
|
+
|
|
80
|
+
No lesson violations found. The toolkit's bash-only codebase is not covered by the current syntactic lesson set (which targets Python/JS). Future work: add bash-specific lessons (e.g., unquoted variables, missing `set -euo pipefail`).
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Lesson File Schema Validation (Batch 2)
|
|
85
|
+
|
|
86
|
+
### Method
|
|
87
|
+
|
|
88
|
+
Validated all 6 lesson files (`docs/lessons/0001-*.md` through `0006-*.md`) against the schema defined in `docs/lessons/TEMPLATE.md`.
|
|
89
|
+
|
|
90
|
+
**Required fields checked:**
|
|
91
|
+
- `id` (integer), `title` (non-empty), `severity` (blocker|should-fix|nice-to-have)
|
|
92
|
+
- `languages` (array or `all`), `category` (enum of 6 values)
|
|
93
|
+
- `pattern.type` (syntactic|semantic), `pattern.regex` (required if syntactic), `pattern.description`
|
|
94
|
+
- `fix` (non-empty), `example.bad` (non-empty), `example.good` (non-empty)
|
|
95
|
+
|
|
96
|
+
### Schema Results
|
|
97
|
+
|
|
98
|
+
| File | id | severity | category | pattern.type | regex | All fields | Status |
|
|
99
|
+
|------|----|----------|----------|-------------|-------|------------|--------|
|
|
100
|
+
| `0001-bare-exception-swallowing.md` | 1 | blocker | silent-failures | syntactic | `^\s*except\s*:` | ✓ | PASS |
|
|
101
|
+
| `0002-async-def-without-await.md` | 2 | blocker | async-traps | semantic | N/A | ✓ | PASS |
|
|
102
|
+
| `0003-create-task-without-callback.md` | 3 | should-fix | silent-failures | semantic | N/A | ✓ | PASS |
|
|
103
|
+
| `0004-hardcoded-test-counts.md` | 4 | should-fix | test-anti-patterns | syntactic | `assert.*==\s*\d+\|...` | ✓ | PASS |
|
|
104
|
+
| `0005-sqlite-without-closing.md` | 5 | should-fix | silent-failures | syntactic | `sqlite3\.connect\(` | ✓ | PASS |
|
|
105
|
+
| `0006-venv-pip-path.md` | 6 | should-fix | integration-boundaries | syntactic | `\.venv/bin/pip\b` | ✓ | PASS |
|
|
106
|
+
|
|
107
|
+
**6/6 lesson files pass schema validation.** All required fields present, all enum values valid.
|
|
108
|
+
|
|
109
|
+
### Regex Compilation Results
|
|
110
|
+
|
|
111
|
+
Tested all 4 syntactic lesson regex patterns with `grep -P`:
|
|
112
|
+
|
|
113
|
+
| Lesson | Regex | Compiles | Status |
|
|
114
|
+
|--------|-------|----------|--------|
|
|
115
|
+
| 0001 | `^\s*except\s*:` | ✓ | PASS |
|
|
116
|
+
| 0004 | `assert.*==\s*\d+\|expect\(.*\)\.toBe\(\d+\)\|assert_equal.*\d+` | ✓ | PASS |
|
|
117
|
+
| 0005 | `sqlite3\.connect\(` | ✓ | PASS |
|
|
118
|
+
| 0006 | `\.venv/bin/pip\b` | ✓ | PASS |
|
|
119
|
+
|
|
120
|
+
**4/4 syntactic regex patterns compile successfully** (grep -P exit code 0 or 1).
|
|
121
|
+
|
|
122
|
+
### Observations
|
|
123
|
+
|
|
124
|
+
- All lessons use valid enum values for `severity` and `category`
|
|
125
|
+
- Semantic lessons (0002, 0003) correctly omit `regex` field
|
|
126
|
+
- ID sequence is contiguous (1-6) with no gaps
|
|
127
|
+
- No issues found — lesson schema is clean
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Manifest & Frontmatter Validation (Batch 2)
|
|
132
|
+
|
|
133
|
+
### JSON Manifest Validation
|
|
134
|
+
|
|
135
|
+
| File | Valid JSON | Required Fields | Status |
|
|
136
|
+
|------|-----------|----------------|--------|
|
|
137
|
+
| `.claude-plugin/plugin.json` | ✓ | name, description, version, author | PASS |
|
|
138
|
+
| `.claude-plugin/marketplace.json` | ✓ | N/A (list format) | PASS |
|
|
139
|
+
| `hooks/hooks.json` | ✓ | N/A (event-keyed) | PASS |
|
|
140
|
+
|
|
141
|
+
**3/3 JSON files pass validation.**
|
|
142
|
+
|
|
143
|
+
### Skill Frontmatter Validation
|
|
144
|
+
|
|
145
|
+
Checked all 15 skills for required fields: `name`, `description`, `version`.
|
|
146
|
+
|
|
147
|
+
| Skill | name | description | version | Status |
|
|
148
|
+
|-------|------|-------------|---------|--------|
|
|
149
|
+
| `brainstorming` | ✓ | ✓ | 1.0.0 | PASS |
|
|
150
|
+
| `dispatching-parallel-agents` | ✓ | ✓ | 1.0.0 | PASS |
|
|
151
|
+
| `executing-plans` | ✓ | ✓ | 1.0.0 | PASS |
|
|
152
|
+
| `finishing-a-development-branch` | ✓ | ✓ | 1.0.0 | PASS |
|
|
153
|
+
| `receiving-code-review` | ✓ | ✓ | 1.0.0 | PASS |
|
|
154
|
+
| `requesting-code-review` | ✓ | ✓ | 1.0.0 | PASS |
|
|
155
|
+
| `subagent-driven-development` | ✓ | ✓ | 1.0.0 | PASS |
|
|
156
|
+
| `systematic-debugging` | ✓ | ✓ | 1.0.0 | PASS |
|
|
157
|
+
| `test-driven-development` | ✓ | ✓ | 1.0.0 | PASS |
|
|
158
|
+
| `using-git-worktrees` | ✓ | ✓ | 1.0.0 | PASS |
|
|
159
|
+
| `using-superpowers` | ✓ | ✓ | 1.0.0 | PASS |
|
|
160
|
+
| `verification-before-completion` | ✓ | ✓ | 1.0.0 | PASS |
|
|
161
|
+
| `verify` | ✓ | ✓ | 1.0.0 | PASS |
|
|
162
|
+
| `writing-plans` | ✓ | ✓ | 1.0.0 | PASS |
|
|
163
|
+
| `writing-skills` | ✓ | ✓ | 1.0.0 | PASS |
|
|
164
|
+
|
|
165
|
+
**15/15 skills pass frontmatter validation.**
|
|
166
|
+
|
|
167
|
+
### Command Frontmatter Validation
|
|
168
|
+
|
|
169
|
+
Checked all 6 commands for YAML frontmatter with `description` field (command name derives from filename).
|
|
170
|
+
|
|
171
|
+
| Command | Frontmatter | description | Status |
|
|
172
|
+
|---------|-------------|-------------|--------|
|
|
173
|
+
| `cancel-ralph.md` | ✓ | ✓ | PASS |
|
|
174
|
+
| `code-factory.md` | ✓ | ✓ | PASS |
|
|
175
|
+
| `create-prd.md` | ✓ | ✓ | PASS |
|
|
176
|
+
| `ralph-loop.md` | ✓ | ✓ | PASS |
|
|
177
|
+
| `run-plan.md` | ✓ | ✓ | PASS |
|
|
178
|
+
| `submit-lesson.md` | ✓ | ✓ | PASS |
|
|
179
|
+
|
|
180
|
+
**6/6 commands pass frontmatter validation.**
|
|
181
|
+
|
|
182
|
+
### Observations
|
|
183
|
+
|
|
184
|
+
- All skills at version 1.0.0 — consistent versioning
|
|
185
|
+
- Command files use `description` (not `name`) in frontmatter — name comes from filename per Claude Code convention
|
|
186
|
+
- No missing or malformed frontmatter found across any file type
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Telegram Notification Format
|
|
2
|
+
|
|
3
|
+
Standard notification templates for `run-plan.sh` and Code Factory pipeline execution.
|
|
4
|
+
|
|
5
|
+
## STARTED
|
|
6
|
+
|
|
7
|
+
Sent once at pipeline launch.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
🔧 <Feature Name> - STARTED
|
|
11
|
+
|
|
12
|
+
Project: <project-name>
|
|
13
|
+
Plan: <plan-filename>.md
|
|
14
|
+
Repo: github.com/parthalon025/<repo-name>
|
|
15
|
+
|
|
16
|
+
<N> batches, <M> tasks:
|
|
17
|
+
- B1: <batch title>
|
|
18
|
+
- B2: <batch title>
|
|
19
|
+
- ...
|
|
20
|
+
|
|
21
|
+
Running headless with retry on failure.
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Batch Complete (Success)
|
|
25
|
+
|
|
26
|
+
Sent after each batch passes the quality gate.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
✅ <Feature Name> — B<N>/<total> complete (<duration>s)
|
|
30
|
+
|
|
31
|
+
*<Batch Title>*
|
|
32
|
+
|
|
33
|
+
Tasks completed:
|
|
34
|
+
• T<N>: <description of what was built/changed>
|
|
35
|
+
• T<N+1>: <description>
|
|
36
|
+
• ...
|
|
37
|
+
|
|
38
|
+
Tests: <file count> files, <assertion count> assertions (↑<delta>)
|
|
39
|
+
Quality gate: PASSED
|
|
40
|
+
|
|
41
|
+
Errors during batch: <none | list>
|
|
42
|
+
Lessons triggered: <none | lesson IDs>
|
|
43
|
+
|
|
44
|
+
B<N+1> starting: <next batch title>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Batch Complete (Failure)
|
|
48
|
+
|
|
49
|
+
Sent when a batch fails after all retries.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
❌ <Feature Name> — B<N>/<total> FAILED
|
|
53
|
+
|
|
54
|
+
*<Batch Title>*
|
|
55
|
+
|
|
56
|
+
Attempt <N> of <max>:
|
|
57
|
+
Error: <error description>
|
|
58
|
+
Quality gate: FAILED (<reason>)
|
|
59
|
+
|
|
60
|
+
Errors captured:
|
|
61
|
+
• <specific error 1>
|
|
62
|
+
• <specific error 2>
|
|
63
|
+
|
|
64
|
+
Lessons triggered: <lesson IDs if applicable>
|
|
65
|
+
Action: <retry|stop|skip>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## COMPLETED
|
|
69
|
+
|
|
70
|
+
Sent when all batches finish.
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
🏁 <Feature Name> - COMPLETED
|
|
74
|
+
|
|
75
|
+
Project: <project-name>
|
|
76
|
+
Duration: <total time>
|
|
77
|
+
|
|
78
|
+
Batches: <N>/<N> passed
|
|
79
|
+
Tests: <final count> (<total delta from start>)
|
|
80
|
+
Commits: <commit count>
|
|
81
|
+
|
|
82
|
+
Errors during run:
|
|
83
|
+
• B1: <none | error summary>
|
|
84
|
+
• B2: <none | error summary>
|
|
85
|
+
• ...
|
|
86
|
+
|
|
87
|
+
Lessons triggered: <none | lesson IDs and descriptions>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Key Fields
|
|
91
|
+
|
|
92
|
+
| Field | Source | Purpose |
|
|
93
|
+
|-------|--------|---------|
|
|
94
|
+
| Tasks completed | Batch commit diff | What was built — not what was planned |
|
|
95
|
+
| Tests | `run-all-tests.sh` output | File count + assertion delta |
|
|
96
|
+
| Errors during batch | Quality gate output, retry logs | What went wrong |
|
|
97
|
+
| Lessons triggered | `lesson-check.sh` output | Anti-patterns detected in new code |
|
|
98
|
+
| Duration | `.run-plan-state.json` durations | Wall clock per batch |
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Example Implementation Plan
|
|
2
|
+
|
|
3
|
+
> This is an example plan file that `run-plan.sh` can parse and execute.
|
|
4
|
+
> The parser looks for `## Batch N:` headers to split batches and `### Task M:` for individual tasks.
|
|
5
|
+
|
|
6
|
+
## Batch 1: Project Setup
|
|
7
|
+
|
|
8
|
+
### Task 1: Initialize project structure
|
|
9
|
+
|
|
10
|
+
Create the basic directory layout:
|
|
11
|
+
- `src/` — source code
|
|
12
|
+
- `tests/` — test files
|
|
13
|
+
- `pyproject.toml` with pytest configuration
|
|
14
|
+
|
|
15
|
+
### Task 2: Add configuration module
|
|
16
|
+
|
|
17
|
+
Create `src/config.py`:
|
|
18
|
+
- Load settings from environment variables
|
|
19
|
+
- Provide defaults for development
|
|
20
|
+
- Add `tests/test_config.py` with basic tests
|
|
21
|
+
|
|
22
|
+
## Batch 2: Core Implementation
|
|
23
|
+
|
|
24
|
+
### Task 3: Implement data parser
|
|
25
|
+
|
|
26
|
+
Create `src/parser.py`:
|
|
27
|
+
- Parse CSV input files into structured records
|
|
28
|
+
- Handle malformed rows gracefully (log + skip, don't crash)
|
|
29
|
+
- Add `tests/test_parser.py` covering: valid input, empty input, malformed rows
|
|
30
|
+
|
|
31
|
+
### Task 4: Implement transformer
|
|
32
|
+
|
|
33
|
+
Create `src/transformer.py`:
|
|
34
|
+
- Transform parsed records into output format
|
|
35
|
+
- Support configurable field mapping
|
|
36
|
+
- Add `tests/test_transformer.py`
|
|
37
|
+
|
|
38
|
+
## Batch 3: Integration and CLI
|
|
39
|
+
|
|
40
|
+
### Task 5: Wire components together
|
|
41
|
+
|
|
42
|
+
Create `src/pipeline.py`:
|
|
43
|
+
- Connect parser → transformer → output writer
|
|
44
|
+
- Add end-to-end test: CSV in → transformed output verified
|
|
45
|
+
|
|
46
|
+
### Task 6: Add CLI entry point
|
|
47
|
+
|
|
48
|
+
Create `src/cli.py`:
|
|
49
|
+
- Accept input file and output file arguments
|
|
50
|
+
- Report progress to stderr
|
|
51
|
+
- Add `tests/test_cli.py` testing argument parsing and error cases
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": 1,
|
|
4
|
+
"title": "Create project structure",
|
|
5
|
+
"description": "Initialize directory layout with src/, tests/, and pyproject.toml",
|
|
6
|
+
"acceptance_criteria": [
|
|
7
|
+
"test -d src",
|
|
8
|
+
"test -d tests",
|
|
9
|
+
"test -f pyproject.toml",
|
|
10
|
+
"grep -q 'pytest' pyproject.toml"
|
|
11
|
+
],
|
|
12
|
+
"passes": false,
|
|
13
|
+
"blocked_by": []
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": 2,
|
|
17
|
+
"title": "Add configuration module",
|
|
18
|
+
"description": "Create src/config.py that loads settings from environment variables with sensible defaults",
|
|
19
|
+
"acceptance_criteria": [
|
|
20
|
+
"test -f src/config.py",
|
|
21
|
+
"python3 -c 'from src.config import Settings; s = Settings(); assert s is not None'",
|
|
22
|
+
"pytest tests/test_config.py -x"
|
|
23
|
+
],
|
|
24
|
+
"passes": false,
|
|
25
|
+
"blocked_by": [1]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": 3,
|
|
29
|
+
"title": "Implement data parser",
|
|
30
|
+
"description": "Parse CSV input files into structured records with graceful error handling",
|
|
31
|
+
"acceptance_criteria": [
|
|
32
|
+
"test -f src/parser.py",
|
|
33
|
+
"pytest tests/test_parser.py -x",
|
|
34
|
+
"pytest tests/test_parser.py -k 'malformed' -x"
|
|
35
|
+
],
|
|
36
|
+
"passes": false,
|
|
37
|
+
"blocked_by": [1]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": 4,
|
|
41
|
+
"title": "Implement transformer",
|
|
42
|
+
"description": "Transform parsed records into output format with configurable field mapping",
|
|
43
|
+
"acceptance_criteria": [
|
|
44
|
+
"test -f src/transformer.py",
|
|
45
|
+
"pytest tests/test_transformer.py -x"
|
|
46
|
+
],
|
|
47
|
+
"passes": false,
|
|
48
|
+
"blocked_by": [3]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": 5,
|
|
52
|
+
"title": "Wire end-to-end pipeline",
|
|
53
|
+
"description": "Connect parser, transformer, and output writer into a single pipeline",
|
|
54
|
+
"acceptance_criteria": [
|
|
55
|
+
"test -f src/pipeline.py",
|
|
56
|
+
"pytest tests/test_pipeline.py -x"
|
|
57
|
+
],
|
|
58
|
+
"passes": false,
|
|
59
|
+
"blocked_by": [3, 4]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": 6,
|
|
63
|
+
"title": "Run full quality gate",
|
|
64
|
+
"description": "Ensure all tests pass and no anti-patterns exist in the codebase",
|
|
65
|
+
"acceptance_criteria": [
|
|
66
|
+
"pytest tests/ -x",
|
|
67
|
+
"scripts/lesson-check.sh src/*.py"
|
|
68
|
+
],
|
|
69
|
+
"passes": false,
|
|
70
|
+
"blocked_by": [1, 2, 3, 4, 5]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Roadmap: User Management System
|
|
2
|
+
|
|
3
|
+
Generated: 2026-02-24
|
|
4
|
+
|
|
5
|
+
## Features (dependency order)
|
|
6
|
+
|
|
7
|
+
### Phase 1: Foundation
|
|
8
|
+
| # | Feature | Complexity | Risk | Dependencies |
|
|
9
|
+
|---|---------|-----------|------|-------------|
|
|
10
|
+
| 1 | Database schema and migrations | moderate | low | none |
|
|
11
|
+
| 2 | Authentication API (JWT) | moderate | medium | none |
|
|
12
|
+
|
|
13
|
+
### Phase 2: Core
|
|
14
|
+
| # | Feature | Complexity | Risk | Dependencies |
|
|
15
|
+
|---|---------|-----------|------|-------------|
|
|
16
|
+
| 3 | User CRUD endpoints | moderate | low | #1 |
|
|
17
|
+
| 4 | Role-based access control | complex | medium | #2, #3 |
|
|
18
|
+
|
|
19
|
+
### Phase 3: Polish
|
|
20
|
+
| # | Feature | Complexity | Risk | Dependencies |
|
|
21
|
+
|---|---------|-----------|------|-------------|
|
|
22
|
+
| 5 | Admin dashboard UI | moderate | low | #3, #4 |
|
|
23
|
+
|
|
24
|
+
## Dependency Graph
|
|
25
|
+
```
|
|
26
|
+
1 ──→ 3 ──→ 4 ──→ 5
|
|
27
|
+
2 ──────→ 4
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Total Estimate
|
|
31
|
+
- Features: 5
|
|
32
|
+
- Phases: 3
|
|
33
|
+
- Estimated sessions: 5-8
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Quickstart Plan: Hello World with Quality Gate
|
|
2
|
+
|
|
3
|
+
A minimal 2-batch plan demonstrating the toolkit's core loop: write test → implement → quality gate → next batch.
|
|
4
|
+
|
|
5
|
+
## Batch 1: Setup and first test
|
|
6
|
+
|
|
7
|
+
### Task 1: Create project structure
|
|
8
|
+
|
|
9
|
+
Create the following files:
|
|
10
|
+
|
|
11
|
+
- `src/hello.sh` — a bash script that prints "Hello, World!"
|
|
12
|
+
- `tests/test-hello.sh` — a test that verifies the output
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# src/hello.sh
|
|
16
|
+
#!/usr/bin/env bash
|
|
17
|
+
echo "Hello, World!"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# tests/test-hello.sh
|
|
22
|
+
#!/usr/bin/env bash
|
|
23
|
+
set -euo pipefail
|
|
24
|
+
|
|
25
|
+
output=$(bash src/hello.sh)
|
|
26
|
+
if [[ "$output" == "Hello, World!" ]]; then
|
|
27
|
+
echo "PASS: hello output correct"
|
|
28
|
+
else
|
|
29
|
+
echo "FAIL: expected 'Hello, World!', got '$output'"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Make both executable: `chmod +x src/hello.sh tests/test-hello.sh`
|
|
35
|
+
|
|
36
|
+
Run: `bash tests/test-hello.sh` — expect PASS.
|
|
37
|
+
|
|
38
|
+
## Batch 2: Add parameterized greeting
|
|
39
|
+
|
|
40
|
+
### Task 2: Accept a name argument
|
|
41
|
+
|
|
42
|
+
Update `src/hello.sh` to accept an optional name argument:
|
|
43
|
+
- `bash src/hello.sh` → "Hello, World!"
|
|
44
|
+
- `bash src/hello.sh Alice` → "Hello, Alice!"
|
|
45
|
+
|
|
46
|
+
### Task 3: Add test for parameterized greeting
|
|
47
|
+
|
|
48
|
+
Add a second test case to `tests/test-hello.sh` that verifies `bash src/hello.sh Alice` outputs "Hello, Alice!".
|
|
49
|
+
|
|
50
|
+
Run: `bash tests/test-hello.sh` — expect both PASS.
|
|
51
|
+
|
|
52
|
+
## Running This Plan
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Headless (fully autonomous)
|
|
56
|
+
scripts/run-plan.sh examples/quickstart-plan.md
|
|
57
|
+
|
|
58
|
+
# In-session (with review between batches)
|
|
59
|
+
/run-plan examples/quickstart-plan.md
|
|
60
|
+
|
|
61
|
+
# Resume if interrupted
|
|
62
|
+
scripts/run-plan.sh --resume
|
|
63
|
+
```
|
package/hooks/hooks.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Autonomous Coding Toolkit hooks — setup and Ralph loop",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"SessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/setup-symlinks.sh",
|
|
10
|
+
"timeout": 5
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"Stop": [
|
|
16
|
+
{
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/stop-hook.sh"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# setup-symlinks.sh — Auto-create ~/.local/bin symlinks on first session
|
|
3
|
+
# Runs via SessionStart hook. Guard file prevents re-running after initial setup.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
PLUGIN_ROOT="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/.." && pwd)"
|
|
7
|
+
GUARD_FILE="${PLUGIN_ROOT}/.symlinks-installed"
|
|
8
|
+
BIN_DIR="${HOME}/.local/bin"
|
|
9
|
+
|
|
10
|
+
# Skip if already done
|
|
11
|
+
[[ -f "$GUARD_FILE" ]] && exit 0
|
|
12
|
+
|
|
13
|
+
# Ensure bin dir exists
|
|
14
|
+
mkdir -p "$BIN_DIR"
|
|
15
|
+
|
|
16
|
+
# Scripts to expose on PATH (user-facing CLI tools only)
|
|
17
|
+
SCRIPTS=(
|
|
18
|
+
run-plan
|
|
19
|
+
quality-gate
|
|
20
|
+
lesson-check
|
|
21
|
+
policy-check
|
|
22
|
+
research-gate
|
|
23
|
+
auto-compound
|
|
24
|
+
entropy-audit
|
|
25
|
+
batch-audit
|
|
26
|
+
batch-test
|
|
27
|
+
mab-run
|
|
28
|
+
scope-infer
|
|
29
|
+
pipeline-status
|
|
30
|
+
setup-ralph-loop
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
installed=0
|
|
34
|
+
for name in "${SCRIPTS[@]}"; do
|
|
35
|
+
script="${PLUGIN_ROOT}/scripts/${name}.sh"
|
|
36
|
+
link="${BIN_DIR}/${name}"
|
|
37
|
+
if [[ -f "$script" ]] && [[ ! -e "$link" ]]; then
|
|
38
|
+
ln -sf "$script" "$link"
|
|
39
|
+
installed=$((installed + 1))
|
|
40
|
+
fi
|
|
41
|
+
done
|
|
42
|
+
|
|
43
|
+
# Mark as done
|
|
44
|
+
touch "$GUARD_FILE"
|
|
45
|
+
|
|
46
|
+
if [[ $installed -gt 0 ]]; then
|
|
47
|
+
echo "Autonomous Coding Toolkit: installed $installed commands to ~/.local/bin"
|
|
48
|
+
fi
|