nemonix-cli 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/LICENSE +21 -0
- package/README.md +186 -0
- package/dist/cli.js +6870 -0
- package/package.json +48 -0
- package/src/config/claude-code-config/.claude/commands/setup-tmux.md +0 -0
- package/src/config/claude-code-config/CHANGELOG.md +261 -0
- package/src/config/claude-code-config/README.md +1 -0
- package/src/config/claude-code-config/agents/action.md +36 -0
- package/src/config/claude-code-config/agents/clean-code-runner.md +61 -0
- package/src/config/claude-code-config/agents/code-reviewer.md +172 -0
- package/src/config/claude-code-config/agents/code-simplifier.md +49 -0
- package/src/config/claude-code-config/agents/explore-codebase.md +65 -0
- package/src/config/claude-code-config/agents/explore-docs.md +65 -0
- package/src/config/claude-code-config/agents/explore-fast.md +22 -0
- package/src/config/claude-code-config/agents/implementer.md +181 -0
- package/src/config/claude-code-config/agents/snipper.md +36 -0
- package/src/config/claude-code-config/agents/websearch.md +42 -0
- package/src/config/claude-code-config/commands/prompts/create-vitejs-app.md +272 -0
- package/src/config/claude-code-config/commands/prompts/nextjs-add-prisma-db.md +136 -0
- package/src/config/claude-code-config/commands/prompts/nextjs-setup-better-auth.md +173 -0
- package/src/config/claude-code-config/commands/prompts/nextjs-setup-project.md +200 -0
- package/src/config/claude-code-config/commands/prompts/prompt.md +55 -0
- package/src/config/claude-code-config/commands/prompts/saas-challenge-idea.md +135 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-architecture.md +242 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-headline.md +132 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-landing-copywritting.md +267 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-legals-docs.md +176 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-logos.md +240 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-prd.md +195 -0
- package/src/config/claude-code-config/commands/prompts/saas-create-tasks.md +240 -0
- package/src/config/claude-code-config/commands/prompts/saas-define-pricing.md +293 -0
- package/src/config/claude-code-config/commands/prompts/saas-find-domain-name.md +190 -0
- package/src/config/claude-code-config/commands/prompts/saas-implement-landing-page.md +257 -0
- package/src/config/claude-code-config/commands/prompts/setup-tmux.md +160 -0
- package/src/config/claude-code-config/commands/prompts/tools.md +148 -0
- package/src/config/claude-code-config/hooks/hook-post-file.ts +162 -0
- package/src/config/claude-code-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +81 -0
- package/src/config/claude-code-config/scripts/CLAUDE.md +50 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/CLAUDE.md +59 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/__tests__/shared.test.ts +185 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/__tests__/title-generation.test.ts +44 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/sample-transcript.jsonl +3 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/transcript-short-message.jsonl +2 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/transcript-with-title.jsonl +3 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/src/index.ts +113 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/src/rename-all.ts +148 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/src/shared.ts +157 -0
- package/src/config/claude-code-config/scripts/auto-rename-session/src/worker.ts +58 -0
- package/src/config/claude-code-config/scripts/biome.json +37 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/CLAUDE.md +84 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/__tests__/claude.test.ts +19 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/__tests__/paths.test.ts +68 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/claude.ts +56 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/cli.ts +46 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/helper/credentials.ts +76 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/helper/index.ts +9 -0
- package/src/config/claude-code-config/scripts/claude-code-ai/helper/paths.ts +51 -0
- package/src/config/claude-code-config/scripts/command-validator/CLAUDE.md +112 -0
- package/src/config/claude-code-config/scripts/command-validator/README.md +147 -0
- package/src/config/claude-code-config/scripts/command-validator/src/__tests__/validator.test.ts +99 -0
- package/src/config/claude-code-config/scripts/command-validator/src/cli.ts +121 -0
- package/src/config/claude-code-config/scripts/command-validator/src/lib/security-rules.ts +174 -0
- package/src/config/claude-code-config/scripts/command-validator/src/lib/types.ts +34 -0
- package/src/config/claude-code-config/scripts/command-validator/src/lib/validator.ts +90 -0
- package/src/config/claude-code-config/scripts/package.json +43 -0
- package/src/config/claude-code-config/scripts/statusline/CLAUDE.md +205 -0
- package/src/config/claude-code-config/scripts/statusline/README.md +193 -0
- package/src/config/claude-code-config/scripts/statusline/__tests__/context.test.ts +229 -0
- package/src/config/claude-code-config/scripts/statusline/__tests__/formatters.test.ts +108 -0
- package/src/config/claude-code-config/scripts/statusline/__tests__/statusline.test.ts +309 -0
- package/src/config/claude-code-config/scripts/statusline/data/.gitkeep +0 -0
- package/src/config/claude-code-config/scripts/statusline/defaults.json +82 -0
- package/src/config/claude-code-config/scripts/statusline/docs/ARCHITECTURE.md +166 -0
- package/src/config/claude-code-config/scripts/statusline/fixtures/mock-transcript.jsonl +4 -0
- package/src/config/claude-code-config/scripts/statusline/fixtures/test-input.json +35 -0
- package/src/config/claude-code-config/scripts/statusline/src/analyze-daily-usage.ts +151 -0
- package/src/config/claude-code-config/scripts/statusline/src/commands/interactive-config.ts +515 -0
- package/src/config/claude-code-config/scripts/statusline/src/debug-payloads.ts +195 -0
- package/src/config/claude-code-config/scripts/statusline/src/index.ts +224 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/config-types.ts +110 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/config.ts +21 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/context.ts +103 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/index.ts +111 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +161 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/formatters.ts +426 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/git.ts +100 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/menu-factories.ts +224 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/presets.ts +177 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/render-pure.ts +516 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/types.ts +36 -0
- package/src/config/claude-code-config/scripts/statusline/src/lib/utils.ts +15 -0
- package/src/config/claude-code-config/scripts/statusline/src/stats.ts +119 -0
- package/src/config/claude-code-config/scripts/statusline/src/tests/spend-v2.test.ts +377 -0
- package/src/config/claude-code-config/scripts/statusline/src/tools/fixed-cost-calc.ts +317 -0
- package/src/config/claude-code-config/scripts/statusline/statusline.config.free.json +79 -0
- package/src/config/claude-code-config/scripts/statusline/statusline.config.json +100 -0
- package/src/config/claude-code-config/scripts/statusline/test-with-fixtures.ts +37 -0
- package/src/config/claude-code-config/scripts/statusline/test.ts +20 -0
- package/src/config/claude-code-config/scripts/statusline/tsconfig.json +27 -0
- package/src/config/claude-code-config/scripts/tsconfig.json +27 -0
- package/src/config/claude-code-config/settings.json +92 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/SKILL.md +176 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/architecture-template.md +436 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/challenge-framework.md +289 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/discovery-framework.md +338 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/prd-template.md +452 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/task-template.md +263 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/references/tools.md +132 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/scripts/rename-project.sh +42 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/scripts/setup.sh +104 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-00-init.md +174 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-01-discovery.md +342 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-02-brainstorm.md +230 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-03-validate.md +372 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-04-prd.md +364 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-05-architecture.md +904 -0
- package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-06-tasks.md +446 -0
- package/src/config/claude-code-config/skills/explore/SKILL.md +119 -0
- package/src/config/claude-code-config/skills/frontend-design/LICENSE.txt +177 -0
- package/src/config/claude-code-config/skills/frontend-design/SKILL.md +42 -0
- package/src/config/claude-code-config/skills/git-commit/SKILL.md +42 -0
- package/src/config/claude-code-config/skills/git-create-pr/SKILL.md +53 -0
- package/src/config/claude-code-config/skills/git-fix-pr-comments/SKILL.md +51 -0
- package/src/config/claude-code-config/skills/git-merge/SKILL.md +68 -0
- package/src/config/claude-code-config/skills/marketing-copywriting/SKILL.md +72 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/SKILL.md +694 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/references/comprehensive-example.md +175 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/references/project-patterns.md +334 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/references/prompting-techniques.md +411 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/references/rules-directory-guide.md +298 -0
- package/src/config/claude-code-config/skills/meta-claude-memory/references/section-templates.md +347 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/SKILL.md +357 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/command-vs-prompt.md +287 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/examples.md +689 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/hook-types.md +495 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/input-output-schemas.md +503 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/matchers.md +517 -0
- package/src/config/claude-code-config/skills/meta-hooks-creator/references/troubleshooting.md +653 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/SKILL.md +285 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/anthropic-best-practices.md +126 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/anti-patterns.md +57 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/clarity-principles.md +54 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/context-management.md +389 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/few-shot-patterns.md +47 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/openai-best-practices.md +50 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/prompt-templates.md +110 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/reasoning-techniques.md +52 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/system-prompt-patterns.md +48 -0
- package/src/config/claude-code-config/skills/meta-prompt-creator/references/xml-structure.md +36 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/LICENSE.txt +202 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/SKILL.md +421 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/package.json +5 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/output-patterns.md +82 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/progressive-disclosure-patterns.md +374 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/prompting-integration.md +363 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/real-world-examples.md +513 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/script-patterns.md +385 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/workflows.md +28 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/references/xml-tag-guide.md +606 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/scripts/init-skill.ts +214 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/scripts/package-skill.ts +146 -0
- package/src/config/claude-code-config/skills/meta-skill-creator/scripts/validate.ts +138 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/SKILL.md +390 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/ask-patterns.md +225 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/prompt-engineering.md +377 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/state-management.md +275 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/step-template.md +334 -0
- package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/workflow-patterns.md +300 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/SKILL.md +451 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/context-management.md +567 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/debugging-agents.md +714 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/error-handling-and-recovery.md +502 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/evaluation-and-testing.md +374 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/orchestration-patterns.md +591 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/subagents.md +599 -0
- package/src/config/claude-code-config/skills/meta-subagent-creator/references/writing-subagent-prompts.md +513 -0
- package/src/config/claude-code-config/skills/ralph-loop/SKILL.md +117 -0
- package/src/config/claude-code-config/skills/ralph-loop/scripts/setup.sh +278 -0
- package/src/config/claude-code-config/skills/ralph-loop/steps/step-00-init.md +215 -0
- package/src/config/claude-code-config/skills/ralph-loop/steps/step-01-interactive-prd.md +366 -0
- package/src/config/claude-code-config/skills/ralph-loop/steps/step-02-create-stories.md +273 -0
- package/src/config/claude-code-config/skills/ralph-loop/steps/step-03-finish.md +245 -0
- package/src/config/claude-code-config/skills/ralph-tasks/SKILL.md +88 -0
- package/src/config/claude-code-config/skills/ralph-tasks/scripts/add-task.sh +36 -0
- package/src/config/claude-code-config/skills/ralph-tasks/scripts/list-tasks.sh +66 -0
- package/src/config/claude-code-config/skills/ralph-tasks/scripts/remove-task.sh +47 -0
- package/src/config/claude-code-config/skills/ralph-tasks/scripts/setup.sh +201 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-add-search.md +131 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-add.md +46 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-init.md +123 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-list.md +58 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-remove.md +48 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-setup.md +46 -0
- package/src/config/claude-code-config/skills/ralph-tasks/steps/action-wake-up.md +62 -0
- package/src/config/claude-code-config/skills/utils-fix-errors/SKILL.md +61 -0
- package/src/config/claude-code-config/skills/utils-fix-grammar/SKILL.md +59 -0
- package/src/config/claude-code-config/skills/utils-oneshot/SKILL.md +56 -0
- package/src/config/claude-code-config/skills/utils-refactor/SKILL.md +89 -0
- package/src/config/claude-code-config/skills/utils-save-docs/SKILL.md +74 -0
- package/src/config/claude-code-config/skills/utils-ultrathink/SKILL.md +42 -0
- package/src/config/claude-code-config/skills/workflow-apex/SKILL.md +116 -0
- package/src/config/claude-code-config/skills/workflow-apex/scripts/setup-templates.sh +144 -0
- package/src/config/claude-code-config/skills/workflow-apex/scripts/update-progress.sh +80 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-00-init.md +273 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-branch.md +126 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-economy.md +244 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-interactive.md +165 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-save.md +123 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-01-analyze.md +361 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-02-plan.md +422 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-02b-tasks.md +301 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-03-execute-teams.md +297 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-03-execute.md +239 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-04-validate.md +264 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-05-examine.md +294 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-06-resolve.md +237 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-07-tests.md +250 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-08-run-tests.md +308 -0
- package/src/config/claude-code-config/skills/workflow-apex/steps/step-09-finish.md +193 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/00-context.md +53 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/01-analyze.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/02-plan.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/03-execute.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/04-validate.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/05-examine.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/06-resolve.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/07-tests.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/08-run-tests.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/09-finish.md +10 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/README.md +195 -0
- package/src/config/claude-code-config/skills/workflow-apex/templates/step-complete.md +7 -0
- package/src/config/claude-code-config/skills/workflow-brainstorm/SKILL.md +127 -0
- package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-01-explore.md +230 -0
- package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-02-challenge.md +238 -0
- package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-03-synthesize.md +337 -0
- package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-04-action.md +285 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/SKILL.md +150 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/references/cli-commands.md +122 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/references/github-cli.md +243 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/references/troubleshooting.md +362 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/references/vercel-cli.md +192 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-00-init.md +157 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-01-watch-ci.md +192 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-02-analyze-errors.md +263 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-03-fix-locally.md +312 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-04-commit-push.md +206 -0
- package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-05-cleanup.md +196 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/SKILL.md +129 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/references/general-clean-code.md +347 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/references/nextjs-clean-code.md +458 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/references/react-clean-code.md +406 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/references/tanstack-query-best-practices.md +516 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/references/zustand-best-practices.md +491 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-01-scan.md +137 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-02-apply.md +152 -0
- package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-03-verify.md +143 -0
- package/src/config/claude-code-config/skills/workflow-debug/SKILL.md +126 -0
- package/src/config/claude-code-config/skills/workflow-debug/references/log-technique.md +285 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-00-init.md +94 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-01-analyze.md +180 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-01b-log-instrumentation.md +271 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-02-find-solutions.md +141 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-03-propose.md +142 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-04-fix.md +176 -0
- package/src/config/claude-code-config/skills/workflow-debug/steps/step-05-verify.md +279 -0
- package/src/config/claude-code-config/skills/workflow-review-code/SKILL.md +219 -0
- package/src/config/claude-code-config/skills/workflow-review-code/references/clean-code-principles.md +140 -0
- package/src/config/claude-code-config/skills/workflow-review-code/references/code-quality-metrics.md +174 -0
- package/src/config/claude-code-config/skills/workflow-review-code/references/feedback-patterns.md +149 -0
- package/src/config/claude-code-config/skills/workflow-review-code/references/security-checklist.md +127 -0
- package/src/config/claude-code-config/song/finish.mp3 +0 -0
- package/src/config/claude-code-config/song/need-human.mp3 +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: step-03-finish
|
|
3
|
+
description: Show run command and instructions
|
|
4
|
+
prev_step: steps/step-02-create-stories.md
|
|
5
|
+
next_step: null
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 3: Ready to Run Ralph
|
|
9
|
+
|
|
10
|
+
## MANDATORY EXECUTION RULES (READ FIRST):
|
|
11
|
+
|
|
12
|
+
- 🛑 NEVER skip showing the run command
|
|
13
|
+
- 🛑 NEVER run ralph.sh - user runs it themselves
|
|
14
|
+
- ✅ ALWAYS verify prd.json exists and has stories
|
|
15
|
+
- ✅ ALWAYS show the complete run command for user to copy
|
|
16
|
+
- ✅ ALWAYS let user decide when to run
|
|
17
|
+
- 📋 YOU ARE a helper providing clear instructions
|
|
18
|
+
- 💬 FOCUS on making it easy for user to start Ralph
|
|
19
|
+
- 🚫 FORBIDDEN to run Ralph automatically
|
|
20
|
+
- 🚫 FORBIDDEN to execute any ralph.sh commands
|
|
21
|
+
|
|
22
|
+
## EXECUTION PROTOCOLS:
|
|
23
|
+
|
|
24
|
+
- 🎯 Verify all files are in place
|
|
25
|
+
- 💾 Show summary of what was created
|
|
26
|
+
- 📖 Provide clear run instructions
|
|
27
|
+
- 🚫 FORBIDDEN to modify any files in this step
|
|
28
|
+
|
|
29
|
+
## CONTEXT BOUNDARIES:
|
|
30
|
+
|
|
31
|
+
**Available from previous steps:**
|
|
32
|
+
- `{project_path}` - Absolute path to project
|
|
33
|
+
- `{ralph_dir}` - Path to .claude/ralph
|
|
34
|
+
- `{feature_name}` - Feature folder name
|
|
35
|
+
- `{feature_dir}` - Path to feature folder
|
|
36
|
+
- prd.json exists with user stories
|
|
37
|
+
|
|
38
|
+
## YOUR TASK:
|
|
39
|
+
|
|
40
|
+
Verify setup is complete and provide clear instructions for running Ralph.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## EXECUTION SEQUENCE:
|
|
45
|
+
|
|
46
|
+
### 1. Verify Files Exist
|
|
47
|
+
|
|
48
|
+
Check all required files:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Check ralph.sh
|
|
52
|
+
ls -la {ralph_dir}/ralph.sh
|
|
53
|
+
|
|
54
|
+
# Check prompt.md
|
|
55
|
+
ls -la {ralph_dir}/prompt.md
|
|
56
|
+
|
|
57
|
+
# Check feature files
|
|
58
|
+
ls -la {feature_dir}/PRD.md
|
|
59
|
+
ls -la {feature_dir}/prd.json
|
|
60
|
+
ls -la {feature_dir}/progress.txt
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 2. Get Story Count
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Count stories
|
|
67
|
+
jq '.userStories | length' {feature_dir}/prd.json
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 3. Show Summary
|
|
71
|
+
|
|
72
|
+
Display a comprehensive summary:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
╔════════════════════════════════════════════════════════════════╗
|
|
76
|
+
║ ✅ RALPH READY TO RUN ║
|
|
77
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
78
|
+
║ ║
|
|
79
|
+
║ 📁 Project: {project_path} ║
|
|
80
|
+
║ 📁 Ralph: {ralph_dir} ║
|
|
81
|
+
║ 📁 Feature: {feature_name} ║
|
|
82
|
+
║ ║
|
|
83
|
+
║ 📋 User Stories: {count} stories ready ║
|
|
84
|
+
║ 🌿 Branch: {branchName} ║
|
|
85
|
+
║ ║
|
|
86
|
+
╚════════════════════════════════════════════════════════════════╝
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 4. Show Files Created
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
📁 Files Created:
|
|
93
|
+
|
|
94
|
+
{ralph_dir}/
|
|
95
|
+
├── ralph.sh # Main loop script
|
|
96
|
+
├── prompt.md # Agent instructions
|
|
97
|
+
└── tasks/
|
|
98
|
+
└── {feature_name}/
|
|
99
|
+
├── PRD.md # Feature requirements
|
|
100
|
+
├── prd.json # User stories ({count})
|
|
101
|
+
└── progress.txt # Learning log
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5. Provide Run Command
|
|
105
|
+
|
|
106
|
+
**Primary command:**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Navigate to project
|
|
110
|
+
cd {project_path}
|
|
111
|
+
|
|
112
|
+
# Run Ralph (recommended: start with low iterations to test)
|
|
113
|
+
bun run {ralph_dir}/ralph.sh -f {feature_name} -n 5
|
|
114
|
+
|
|
115
|
+
# Or with bash
|
|
116
|
+
bash {ralph_dir}/ralph.sh -f {feature_name} -n 5
|
|
117
|
+
|
|
118
|
+
# Full run (up to 20 iterations)
|
|
119
|
+
bun run {ralph_dir}/ralph.sh -f {feature_name} -n 20
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 6. Show Quick Reference
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
📖 Quick Reference:
|
|
126
|
+
|
|
127
|
+
# Check progress
|
|
128
|
+
jq '.userStories[] | {id, title, passes}' {feature_dir}/prd.json
|
|
129
|
+
|
|
130
|
+
# See completed stories
|
|
131
|
+
jq '[.userStories[] | select(.passes == true)] | length' {feature_dir}/prd.json
|
|
132
|
+
|
|
133
|
+
# View learnings
|
|
134
|
+
cat {feature_dir}/progress.txt
|
|
135
|
+
|
|
136
|
+
# Resume after interruption (just run again)
|
|
137
|
+
bun run {ralph_dir}/ralph.sh -f {feature_name}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 7. Important Tips
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
💡 Tips for Success:
|
|
144
|
+
|
|
145
|
+
1. Start with -n 5 to test the first few iterations
|
|
146
|
+
2. Watch the first 2-3 stories to verify they work correctly
|
|
147
|
+
3. Ralph accumulates learnings - later iterations are smarter
|
|
148
|
+
4. If a story fails, it will retry in the next iteration
|
|
149
|
+
5. You can stop anytime with Ctrl+C and resume later
|
|
150
|
+
|
|
151
|
+
⚠️ Before Running:
|
|
152
|
+
|
|
153
|
+
1. Make sure you're on a clean git branch
|
|
154
|
+
2. The branch will be: {branchName}
|
|
155
|
+
3. Consider using Docker sandbox for isolation:
|
|
156
|
+
docker sandbox run claude ./ralph.sh -f {feature_name}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 8. Final Confirmation
|
|
160
|
+
|
|
161
|
+
**Use AskUserQuestion:**
|
|
162
|
+
```yaml
|
|
163
|
+
questions:
|
|
164
|
+
- header: "Ready"
|
|
165
|
+
question: "All set! Would you like me to explain anything else?"
|
|
166
|
+
options:
|
|
167
|
+
- label: "I'm ready to run Ralph"
|
|
168
|
+
description: "Thanks, I'll run the command myself"
|
|
169
|
+
- label: "Show me the first few stories"
|
|
170
|
+
description: "Let me preview what Ralph will implement"
|
|
171
|
+
- label: "How do I monitor progress?"
|
|
172
|
+
description: "Explain how to track what Ralph is doing"
|
|
173
|
+
- label: "What if something fails?"
|
|
174
|
+
description: "Explain error recovery"
|
|
175
|
+
multiSelect: false
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Handle responses:**
|
|
179
|
+
|
|
180
|
+
**"Show first few stories":**
|
|
181
|
+
```bash
|
|
182
|
+
jq '.userStories[:5]' {feature_dir}/prd.json
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**"How do I monitor progress":**
|
|
186
|
+
```
|
|
187
|
+
📊 Monitoring Ralph:
|
|
188
|
+
|
|
189
|
+
1. Watch the terminal - Ralph shows iteration progress
|
|
190
|
+
2. Check completed stories:
|
|
191
|
+
jq '[.userStories[] | select(.passes == true)] | length' {feature_dir}/prd.json
|
|
192
|
+
|
|
193
|
+
3. View learnings (grows each iteration):
|
|
194
|
+
tail -50 {feature_dir}/progress.txt
|
|
195
|
+
|
|
196
|
+
4. Check git log:
|
|
197
|
+
git log --oneline -10
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**"What if something fails":**
|
|
201
|
+
```
|
|
202
|
+
🔧 Error Recovery:
|
|
203
|
+
|
|
204
|
+
1. If a story fails, Ralph will skip it and try the next
|
|
205
|
+
2. Run Ralph again - it picks up incomplete stories
|
|
206
|
+
3. If stuck, manually set "passes": true in prd.json to skip
|
|
207
|
+
4. Check progress.txt for learnings about what went wrong
|
|
208
|
+
5. Edit prd.json to break large stories into smaller ones
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## SUCCESS METRICS:
|
|
214
|
+
|
|
215
|
+
✅ All files verified to exist
|
|
216
|
+
✅ Story count shown
|
|
217
|
+
✅ Run command provided
|
|
218
|
+
✅ Quick reference shown
|
|
219
|
+
✅ Tips explained
|
|
220
|
+
✅ User questions answered
|
|
221
|
+
|
|
222
|
+
## FAILURE MODES:
|
|
223
|
+
|
|
224
|
+
❌ Missing files (ralph.sh, prd.json, etc.)
|
|
225
|
+
❌ Empty prd.json (no stories)
|
|
226
|
+
❌ Invalid JSON in prd.json
|
|
227
|
+
|
|
228
|
+
## FINISH PROTOCOLS:
|
|
229
|
+
|
|
230
|
+
- Never run Ralph automatically
|
|
231
|
+
- Always let user decide when to start
|
|
232
|
+
- Provide complete run command they can copy
|
|
233
|
+
- Explain monitoring and recovery
|
|
234
|
+
|
|
235
|
+
## WORKFLOW COMPLETE:
|
|
236
|
+
|
|
237
|
+
This is the final step. The user now has everything they need to run Ralph.
|
|
238
|
+
|
|
239
|
+
<critical>
|
|
240
|
+
Remember: Ralph runs autonomously. Make sure the user understands:
|
|
241
|
+
1. How to start it
|
|
242
|
+
2. How to monitor it
|
|
243
|
+
3. How to stop/resume it
|
|
244
|
+
4. How to handle failures
|
|
245
|
+
</critical>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralph-tasks
|
|
3
|
+
description: This skill should be used when the user asks to "add a task for Ralph", "list Ralph tasks", "remove Ralph task", "setup Ralph tasks", or mentions ralph-tasks, task queue for AI agent, or autonomous task management. Manages a JSON-based task queue for Ralph autonomous loop.
|
|
4
|
+
argument-hint: "<command> [args]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<objective>
|
|
8
|
+
Manage a task queue for the Ralph autonomous AI coding loop. Provides commands to add, list, remove tasks, and run a continuous execution loop that processes tasks one by one until completion.
|
|
9
|
+
</objective>
|
|
10
|
+
|
|
11
|
+
<quick_start>
|
|
12
|
+
```bash
|
|
13
|
+
/ralph-tasks setup # Initialize in project
|
|
14
|
+
/ralph-tasks add Add authentication # Add task (quotes optional)
|
|
15
|
+
/ralph-tasks add Add dark mode -s # Add with context search
|
|
16
|
+
/ralph-tasks add Fix bug --search # Same with --search
|
|
17
|
+
/ralph-tasks list # List all tasks
|
|
18
|
+
/ralph-tasks remove 1 # Remove task #1
|
|
19
|
+
/ralph-tasks wake-up # Show loop command
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Multi-task:** Add multiple tasks in one message - they're processed in parallel.
|
|
23
|
+
</quick_start>
|
|
24
|
+
|
|
25
|
+
<commands>
|
|
26
|
+
| Command | Description |
|
|
27
|
+
|---------|-------------|
|
|
28
|
+
| `setup` | Initialize .claude/ralph-tasks/ with all files |
|
|
29
|
+
| `add <task>` | Add a task (quotes optional) |
|
|
30
|
+
| `add <task> -s` | Add with codebase context search |
|
|
31
|
+
| `list` | Show all tasks with status |
|
|
32
|
+
| `remove <id>` | Remove task by ID |
|
|
33
|
+
| `wake-up` | Show command to start loop |
|
|
34
|
+
|
|
35
|
+
**Aliases:** `add tasks`, `add task`, `list tasks`, `remove task`
|
|
36
|
+
</commands>
|
|
37
|
+
|
|
38
|
+
<file_structure>
|
|
39
|
+
```
|
|
40
|
+
{project}/.claude/ralph-tasks/
|
|
41
|
+
├── tasks.json # Task queue
|
|
42
|
+
├── wake-up.sh # Main loop script
|
|
43
|
+
├── prompt.md # Agent instructions
|
|
44
|
+
└── progress.txt # Accumulated learnings
|
|
45
|
+
```
|
|
46
|
+
</file_structure>
|
|
47
|
+
|
|
48
|
+
<entry_point>
|
|
49
|
+
**FIRST ACTION:** Load `steps/action-init.md`
|
|
50
|
+
|
|
51
|
+
This step parses the command and routes to the appropriate action file.
|
|
52
|
+
</entry_point>
|
|
53
|
+
|
|
54
|
+
<action_files>
|
|
55
|
+
| Action | File | Purpose |
|
|
56
|
+
|--------|------|---------|
|
|
57
|
+
| init | `steps/action-init.md` | Parse command and route |
|
|
58
|
+
| setup | `steps/action-setup.md` | Initialize ralph-tasks |
|
|
59
|
+
| add | `steps/action-add.md` | Add task to queue |
|
|
60
|
+
| add-search | `steps/action-add-search.md` | Add task with context |
|
|
61
|
+
| list | `steps/action-list.md` | Display tasks |
|
|
62
|
+
| remove | `steps/action-remove.md` | Remove task by ID |
|
|
63
|
+
| wake-up | `steps/action-wake-up.md` | Show loop instructions |
|
|
64
|
+
</action_files>
|
|
65
|
+
|
|
66
|
+
<state_variables>
|
|
67
|
+
| Variable | Type | Description |
|
|
68
|
+
|----------|------|-------------|
|
|
69
|
+
| `{command}` | string | Parsed command (setup, add, list, remove, wake-up) |
|
|
70
|
+
| `{task_description}` | string | Task description (for add) |
|
|
71
|
+
| `{task_id}` | number | Task ID (for remove) |
|
|
72
|
+
| `{search_mode}` | boolean | Whether --search/-s flag is set |
|
|
73
|
+
| `{project_path}` | string | Current project path |
|
|
74
|
+
| `{tasks_dir}` | string | Path to .claude/ralph-tasks/ |
|
|
75
|
+
</state_variables>
|
|
76
|
+
|
|
77
|
+
<critical_rules>
|
|
78
|
+
🛑 NEVER run wake-up.sh automatically - user must run it themselves
|
|
79
|
+
🛑 NEVER modify tasks.json without proper JSON handling (use jq)
|
|
80
|
+
✅ ALWAYS use atomic file updates (write to tmp, then mv)
|
|
81
|
+
✅ ALWAYS load only the current action file (progressive disclosure)
|
|
82
|
+
</critical_rules>
|
|
83
|
+
|
|
84
|
+
<success_criteria>
|
|
85
|
+
✅ Commands parsed correctly and routed to action files
|
|
86
|
+
✅ Each action executes its specific task
|
|
87
|
+
✅ Progressive loading minimizes context usage
|
|
88
|
+
</success_criteria>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Add a task to the Ralph Tasks queue
|
|
3
|
+
# Usage: ./add-task.sh <project-path> "<task description>"
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
PROJECT_PATH="${1:-.}"
|
|
8
|
+
TASK_DESC="$2"
|
|
9
|
+
|
|
10
|
+
if [ -z "$TASK_DESC" ]; then
|
|
11
|
+
echo "❌ Error: Task description required"
|
|
12
|
+
echo "Usage: ./add-task.sh <project-path> \"<task description>\""
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Resolve absolute path
|
|
17
|
+
PROJECT_PATH=$(cd "$PROJECT_PATH" && pwd)
|
|
18
|
+
TASKS_FILE="$PROJECT_PATH/.claude/ralph-tasks/tasks.json"
|
|
19
|
+
|
|
20
|
+
if [ ! -f "$TASKS_FILE" ]; then
|
|
21
|
+
echo "❌ Error: tasks.json not found at $TASKS_FILE"
|
|
22
|
+
echo "Run /ralph-tasks setup first"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Add task using jq
|
|
27
|
+
DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
28
|
+
|
|
29
|
+
jq --arg desc "$TASK_DESC" --arg date "$DATE" \
|
|
30
|
+
'.lastId += 1 | .tasks += [{"id": .lastId, "description": $desc, "status": "pending", "createdAt": $date}]' \
|
|
31
|
+
"$TASKS_FILE" > "$TASKS_FILE.tmp" && mv "$TASKS_FILE.tmp" "$TASKS_FILE"
|
|
32
|
+
|
|
33
|
+
# Get the new task ID
|
|
34
|
+
NEW_ID=$(jq '.lastId' "$TASKS_FILE")
|
|
35
|
+
|
|
36
|
+
echo "✅ Task #$NEW_ID added: $TASK_DESC"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# List all tasks in the Ralph Tasks queue
|
|
3
|
+
# Usage: ./list-tasks.sh <project-path>
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
PROJECT_PATH="${1:-.}"
|
|
8
|
+
|
|
9
|
+
# Resolve absolute path
|
|
10
|
+
PROJECT_PATH=$(cd "$PROJECT_PATH" && pwd)
|
|
11
|
+
TASKS_FILE="$PROJECT_PATH/.claude/ralph-tasks/tasks.json"
|
|
12
|
+
|
|
13
|
+
if [ ! -f "$TASKS_FILE" ]; then
|
|
14
|
+
echo "❌ Error: tasks.json not found at $TASKS_FILE"
|
|
15
|
+
echo "Run /ralph-tasks setup first"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Get counts
|
|
20
|
+
PENDING=$(jq '[.tasks[] | select(.status == "pending")] | length' "$TASKS_FILE")
|
|
21
|
+
IN_PROGRESS=$(jq '[.tasks[] | select(.status == "in_progress")] | length' "$TASKS_FILE")
|
|
22
|
+
COMPLETED=$(jq '[.tasks[] | select(.status == "completed")] | length' "$TASKS_FILE")
|
|
23
|
+
TOTAL=$(jq '.tasks | length' "$TASKS_FILE")
|
|
24
|
+
|
|
25
|
+
echo ""
|
|
26
|
+
echo "╔════════════════════════════════════════════════════════════╗"
|
|
27
|
+
echo "║ 📋 RALPH TASKS ║"
|
|
28
|
+
echo "╚════════════════════════════════════════════════════════════╝"
|
|
29
|
+
echo ""
|
|
30
|
+
|
|
31
|
+
if [ "$TOTAL" -eq 0 ]; then
|
|
32
|
+
echo " No tasks found. Add one with:"
|
|
33
|
+
echo " /ralph-tasks add \"your task description\""
|
|
34
|
+
echo ""
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Print each task
|
|
39
|
+
jq -r '.tasks[] | "\(.id)|\(.status)|\(.description)"' "$TASKS_FILE" | while IFS='|' read -r id status desc; do
|
|
40
|
+
case $status in
|
|
41
|
+
"pending")
|
|
42
|
+
icon="⏳"
|
|
43
|
+
;;
|
|
44
|
+
"in_progress")
|
|
45
|
+
icon="🔄"
|
|
46
|
+
;;
|
|
47
|
+
"completed")
|
|
48
|
+
icon="✅"
|
|
49
|
+
;;
|
|
50
|
+
*)
|
|
51
|
+
icon="❓"
|
|
52
|
+
;;
|
|
53
|
+
esac
|
|
54
|
+
|
|
55
|
+
# Truncate description if too long
|
|
56
|
+
if [ ${#desc} -gt 50 ]; then
|
|
57
|
+
desc="${desc:0:47}..."
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
printf " %s #%-3s %-12s %s\n" "$icon" "$id" "[$status]" "$desc"
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
echo ""
|
|
64
|
+
echo "─────────────────────────────────────────────────────────────"
|
|
65
|
+
echo " Summary: $PENDING pending | $IN_PROGRESS in progress | $COMPLETED completed"
|
|
66
|
+
echo ""
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Remove a task from the Ralph Tasks queue
|
|
3
|
+
# Usage: ./remove-task.sh <project-path> <task-id>
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
PROJECT_PATH="${1:-.}"
|
|
8
|
+
TASK_ID="$2"
|
|
9
|
+
|
|
10
|
+
if [ -z "$TASK_ID" ]; then
|
|
11
|
+
echo "❌ Error: Task ID required"
|
|
12
|
+
echo "Usage: ./remove-task.sh <project-path> <task-id>"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Validate task ID is a number
|
|
17
|
+
if ! [[ "$TASK_ID" =~ ^[0-9]+$ ]]; then
|
|
18
|
+
echo "❌ Error: Task ID must be a number"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Resolve absolute path
|
|
23
|
+
PROJECT_PATH=$(cd "$PROJECT_PATH" && pwd)
|
|
24
|
+
TASKS_FILE="$PROJECT_PATH/.claude/ralph-tasks/tasks.json"
|
|
25
|
+
|
|
26
|
+
if [ ! -f "$TASKS_FILE" ]; then
|
|
27
|
+
echo "❌ Error: tasks.json not found at $TASKS_FILE"
|
|
28
|
+
echo "Run /ralph-tasks setup first"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Check if task exists
|
|
33
|
+
TASK_EXISTS=$(jq --argjson id "$TASK_ID" '[.tasks[] | select(.id == $id)] | length' "$TASKS_FILE")
|
|
34
|
+
|
|
35
|
+
if [ "$TASK_EXISTS" -eq 0 ]; then
|
|
36
|
+
echo "❌ Error: Task #$TASK_ID not found"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Get task description for confirmation
|
|
41
|
+
TASK_DESC=$(jq -r --argjson id "$TASK_ID" '.tasks[] | select(.id == $id) | .description' "$TASKS_FILE")
|
|
42
|
+
|
|
43
|
+
# Remove task using jq
|
|
44
|
+
jq --argjson id "$TASK_ID" '.tasks = [.tasks[] | select(.id != $id)]' \
|
|
45
|
+
"$TASKS_FILE" > "$TASKS_FILE.tmp" && mv "$TASKS_FILE.tmp" "$TASKS_FILE"
|
|
46
|
+
|
|
47
|
+
echo "✅ Task #$TASK_ID removed: $TASK_DESC"
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Ralph Tasks Setup Script - Creates task queue infrastructure
|
|
3
|
+
# Usage: ./setup.sh <project-path>
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
PROJECT_PATH="${1:-.}"
|
|
8
|
+
|
|
9
|
+
# Resolve absolute path
|
|
10
|
+
PROJECT_PATH=$(cd "$PROJECT_PATH" && pwd)
|
|
11
|
+
RALPH_TASKS_DIR="$PROJECT_PATH/.claude/ralph-tasks"
|
|
12
|
+
|
|
13
|
+
echo "🚀 Setting up Ralph Tasks in: $PROJECT_PATH"
|
|
14
|
+
|
|
15
|
+
# Create directory structure
|
|
16
|
+
mkdir -p "$RALPH_TASKS_DIR"
|
|
17
|
+
|
|
18
|
+
# Create tasks.json
|
|
19
|
+
cat > "$RALPH_TASKS_DIR/tasks.json" << 'TASKS_JSON'
|
|
20
|
+
{
|
|
21
|
+
"tasks": [],
|
|
22
|
+
"lastId": 0
|
|
23
|
+
}
|
|
24
|
+
TASKS_JSON
|
|
25
|
+
|
|
26
|
+
echo "✅ Created tasks.json"
|
|
27
|
+
|
|
28
|
+
# Create wake-up.sh (main loop script)
|
|
29
|
+
cat > "$RALPH_TASKS_DIR/wake-up.sh" << 'WAKEUP_SH'
|
|
30
|
+
#!/bin/bash
|
|
31
|
+
# Ralph Tasks - Continuous Execution Loop
|
|
32
|
+
# Usage: ./wake-up.sh
|
|
33
|
+
|
|
34
|
+
set -e
|
|
35
|
+
|
|
36
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
37
|
+
PROJECT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
|
38
|
+
TASKS_FILE="$SCRIPT_DIR/tasks.json"
|
|
39
|
+
PROMPT_FILE="$SCRIPT_DIR/prompt.md"
|
|
40
|
+
PROGRESS_FILE="$SCRIPT_DIR/progress.txt"
|
|
41
|
+
WAIT_SECONDS=60
|
|
42
|
+
|
|
43
|
+
echo "╔════════════════════════════════════════════════════════════╗"
|
|
44
|
+
echo "║ 🤖 RALPH TASKS STARTING ║"
|
|
45
|
+
echo "╠════════════════════════════════════════════════════════════╣"
|
|
46
|
+
echo "║ Project: $PROJECT_DIR"
|
|
47
|
+
echo "║ Tasks file: $TASKS_FILE"
|
|
48
|
+
echo "║ Wait interval: ${WAIT_SECONDS}s when no tasks"
|
|
49
|
+
echo "╚════════════════════════════════════════════════════════════╝"
|
|
50
|
+
echo ""
|
|
51
|
+
echo "Press Ctrl+C to stop"
|
|
52
|
+
echo ""
|
|
53
|
+
|
|
54
|
+
cd "$PROJECT_DIR"
|
|
55
|
+
|
|
56
|
+
ITERATION=0
|
|
57
|
+
|
|
58
|
+
while true; do
|
|
59
|
+
ITERATION=$((ITERATION + 1))
|
|
60
|
+
|
|
61
|
+
# Get pending tasks count
|
|
62
|
+
PENDING=$(jq '[.tasks[] | select(.status == "pending")] | length' "$TASKS_FILE")
|
|
63
|
+
IN_PROGRESS=$(jq '[.tasks[] | select(.status == "in_progress")] | length' "$TASKS_FILE")
|
|
64
|
+
COMPLETED=$(jq '[.tasks[] | select(.status == "completed")] | length' "$TASKS_FILE")
|
|
65
|
+
TOTAL=$(jq '.tasks | length' "$TASKS_FILE")
|
|
66
|
+
|
|
67
|
+
echo ""
|
|
68
|
+
echo "═══════════════════════════════════════════════════════════════"
|
|
69
|
+
echo "📍 Iteration $ITERATION | Pending: $PENDING | In Progress: $IN_PROGRESS | Completed: $COMPLETED / $TOTAL"
|
|
70
|
+
echo "═══════════════════════════════════════════════════════════════"
|
|
71
|
+
|
|
72
|
+
if [ "$PENDING" -eq 0 ] && [ "$IN_PROGRESS" -eq 0 ]; then
|
|
73
|
+
echo ""
|
|
74
|
+
echo "💤 No pending tasks. Waiting ${WAIT_SECONDS} seconds..."
|
|
75
|
+
echo " (Add tasks with: /ralph-tasks add \"your task\")"
|
|
76
|
+
sleep "$WAIT_SECONDS"
|
|
77
|
+
continue
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Run Claude with the prompt
|
|
81
|
+
echo ""
|
|
82
|
+
echo "🚀 Starting Claude agent..."
|
|
83
|
+
echo ""
|
|
84
|
+
|
|
85
|
+
OUTPUT=$(claude -p --dangerously-skip-permissions \
|
|
86
|
+
"@$TASKS_FILE @$PROGRESS_FILE @$PROMPT_FILE" 2>&1 \
|
|
87
|
+
| tee /dev/stderr) || true
|
|
88
|
+
|
|
89
|
+
# Brief pause between iterations
|
|
90
|
+
sleep 2
|
|
91
|
+
done
|
|
92
|
+
WAKEUP_SH
|
|
93
|
+
|
|
94
|
+
chmod +x "$RALPH_TASKS_DIR/wake-up.sh"
|
|
95
|
+
echo "✅ Created wake-up.sh"
|
|
96
|
+
|
|
97
|
+
# Create prompt.md (agent instructions)
|
|
98
|
+
cat > "$RALPH_TASKS_DIR/prompt.md" << 'PROMPT_MD'
|
|
99
|
+
# Ralph Tasks Agent Instructions
|
|
100
|
+
|
|
101
|
+
## Your Task
|
|
102
|
+
|
|
103
|
+
You are an autonomous AI coding agent. Each iteration, you implement ONE task from the task queue.
|
|
104
|
+
|
|
105
|
+
## Execution Sequence
|
|
106
|
+
|
|
107
|
+
1. **Read Task Queue**
|
|
108
|
+
- Read tasks.json to see all tasks
|
|
109
|
+
- Find the first task with `status: "pending"` (lowest ID first)
|
|
110
|
+
- If a task has `status: "in_progress"`, continue that one instead
|
|
111
|
+
- If no pending/in_progress tasks, output `<no-tasks>` and stop
|
|
112
|
+
|
|
113
|
+
2. **Mark Task In Progress**
|
|
114
|
+
- Update tasks.json to set the task's status to `"in_progress"`
|
|
115
|
+
- Use jq for atomic updates:
|
|
116
|
+
```bash
|
|
117
|
+
jq --argjson id TASK_ID '.tasks = [.tasks[] | if .id == $id then .status = "in_progress" else . end]' tasks.json > tmp.json && mv tmp.json tasks.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
3. **Implement the Task**
|
|
121
|
+
- Read progress.txt for patterns and learnings
|
|
122
|
+
- Implement the task completely
|
|
123
|
+
- Make minimal changes to achieve the goal
|
|
124
|
+
|
|
125
|
+
4. **Verify Quality**
|
|
126
|
+
- Run typecheck: `pnpm tsc --noEmit` or `npm run typecheck`
|
|
127
|
+
- Run tests: `pnpm test` or `npm test`
|
|
128
|
+
- Run build: `pnpm build` or `npm run build`
|
|
129
|
+
- Fix any issues before proceeding
|
|
130
|
+
|
|
131
|
+
5. **Commit Changes**
|
|
132
|
+
- Stage changes: `git add .`
|
|
133
|
+
- Commit with format: `feat: [Task ID] - [Description]`
|
|
134
|
+
- Example: `feat: #1 - Add user authentication`
|
|
135
|
+
|
|
136
|
+
6. **Mark Task Completed**
|
|
137
|
+
- Update tasks.json to set status to `"completed"` and add `completedAt`
|
|
138
|
+
```bash
|
|
139
|
+
jq --argjson id TASK_ID --arg date "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
140
|
+
'.tasks = [.tasks[] | if .id == $id then .status = "completed" | .completedAt = $date else . end]' \
|
|
141
|
+
tasks.json > tmp.json && mv tmp.json tasks.json
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
7. **Log Learnings**
|
|
145
|
+
- Append to progress.txt:
|
|
146
|
+
```
|
|
147
|
+
## [Date] - Task #[ID]: [Description]
|
|
148
|
+
- What was implemented
|
|
149
|
+
- Files changed
|
|
150
|
+
- **Learnings:**
|
|
151
|
+
- Patterns discovered
|
|
152
|
+
- Gotchas encountered
|
|
153
|
+
---
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Stop Condition
|
|
157
|
+
|
|
158
|
+
If no tasks have `status: "pending"` or `status: "in_progress"`, output:
|
|
159
|
+
|
|
160
|
+
<no-tasks>
|
|
161
|
+
|
|
162
|
+
This tells the loop to wait before checking again.
|
|
163
|
+
|
|
164
|
+
## Critical Rules
|
|
165
|
+
|
|
166
|
+
- 🛑 NEVER implement more than ONE task per iteration
|
|
167
|
+
- 🛑 NEVER skip verification (typecheck/tests/build)
|
|
168
|
+
- 🛑 NEVER commit if tests are failing
|
|
169
|
+
- ✅ ALWAYS mark task as in_progress before starting
|
|
170
|
+
- ✅ ALWAYS mark task as completed after finishing
|
|
171
|
+
- ✅ ALWAYS append learnings to progress.txt
|
|
172
|
+
- ✅ ALWAYS use jq for JSON updates (atomic operations)
|
|
173
|
+
PROMPT_MD
|
|
174
|
+
|
|
175
|
+
echo "✅ Created prompt.md"
|
|
176
|
+
|
|
177
|
+
# Create progress.txt template
|
|
178
|
+
cat > "$RALPH_TASKS_DIR/progress.txt" << PROGRESS_TXT
|
|
179
|
+
# Ralph Tasks Progress Log
|
|
180
|
+
Started: $(date +%Y-%m-%d)
|
|
181
|
+
|
|
182
|
+
## Codebase Patterns
|
|
183
|
+
(Add discovered patterns here - Ralph will read these each iteration)
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
PROGRESS_TXT
|
|
188
|
+
|
|
189
|
+
echo "✅ Created progress.txt"
|
|
190
|
+
|
|
191
|
+
echo ""
|
|
192
|
+
echo "╔════════════════════════════════════════════════════════════╗"
|
|
193
|
+
echo "║ ✅ RALPH TASKS SETUP COMPLETE ║"
|
|
194
|
+
echo "╠════════════════════════════════════════════════════════════╣"
|
|
195
|
+
echo "║ Created: $RALPH_TASKS_DIR"
|
|
196
|
+
echo "╠════════════════════════════════════════════════════════════╣"
|
|
197
|
+
echo "║ Next steps:"
|
|
198
|
+
echo "║ 1. Add tasks: /ralph-tasks add \"your task description\""
|
|
199
|
+
echo "║ 2. List tasks: /ralph-tasks list"
|
|
200
|
+
echo "║ 3. Start loop: sh $RALPH_TASKS_DIR/wake-up.sh"
|
|
201
|
+
echo "╚════════════════════════════════════════════════════════════╝"
|