oh-my-customcode 0.1.4 → 0.2.1
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/README.md +80 -129
- package/dist/cli/index.js +273 -100
- package/dist/index.js +11 -53
- package/package.json +1 -1
- package/templates/{agents/sw-architect/documenter/AGENT.md → .claude/agents/arch-documenter.md} +7 -39
- package/templates/{agents/sw-architect/speckit-agent/AGENT.md → .claude/agents/arch-speckit-agent.md} +61 -63
- package/templates/.claude/agents/be-express-expert.md +71 -0
- package/templates/.claude/agents/be-fastapi-expert.md +33 -0
- package/templates/.claude/agents/be-go-backend-expert.md +33 -0
- package/templates/.claude/agents/be-nestjs-expert.md +51 -0
- package/templates/.claude/agents/be-springboot-expert.md +75 -0
- package/templates/.claude/agents/db-supabase-expert.md +63 -0
- package/templates/{agents/sw-engineer/frontend/svelte-agent/AGENT.md → .claude/agents/fe-svelte-agent.md} +16 -31
- package/templates/.claude/agents/fe-vercel-agent.md +57 -0
- package/templates/{agents/sw-engineer/frontend/vuejs-agent/AGENT.md → .claude/agents/fe-vuejs-agent.md} +16 -31
- package/templates/.claude/agents/infra-aws-expert.md +37 -0
- package/templates/.claude/agents/infra-docker-expert.md +37 -0
- package/templates/.claude/agents/lang-golang-expert.md +33 -0
- package/templates/.claude/agents/lang-java21-expert.md +56 -0
- package/templates/.claude/agents/lang-kotlin-expert.md +33 -0
- package/templates/.claude/agents/lang-python-expert.md +33 -0
- package/templates/.claude/agents/lang-rust-expert.md +33 -0
- package/templates/.claude/agents/lang-typescript-expert.md +33 -0
- package/templates/.claude/agents/mgr-creator.md +102 -0
- package/templates/{agents/manager/gitnerd/AGENT.md → .claude/agents/mgr-gitnerd.md} +8 -17
- package/templates/.claude/agents/mgr-sauron.md +139 -0
- package/templates/{agents/manager/supplier/AGENT.md → .claude/agents/mgr-supplier.md} +14 -46
- package/templates/.claude/agents/mgr-sync-checker.md +89 -0
- package/templates/{agents/manager/updater/AGENT.md → .claude/agents/mgr-updater.md} +21 -53
- package/templates/{agents/qa-team/qa-engineer/AGENT.md → .claude/agents/qa-engineer.md} +13 -24
- package/templates/{agents/qa-team/qa-planner/AGENT.md → .claude/agents/qa-planner.md} +10 -20
- package/templates/{agents/qa-team/qa-writer/AGENT.md → .claude/agents/qa-writer.md} +10 -20
- package/templates/.claude/agents/sys-memory-keeper.md +105 -0
- package/templates/.claude/agents/sys-naggy.md +81 -0
- package/templates/{agents/sw-engineer/tooling/bun-expert/AGENT.md → .claude/agents/tool-bun-expert.md} +28 -39
- package/templates/.claude/agents/tool-npm-expert.md +76 -0
- package/templates/.claude/agents/tool-optimizer.md +75 -0
- package/templates/{agents/tutor/go-tutor/AGENT.md → .claude/agents/tutor-go.md} +16 -27
- package/templates/.claude/contexts/ecomode.md +5 -5
- package/templates/.claude/rules/MUST-agent-design.md +60 -42
- package/templates/.claude/rules/MUST-agent-identification.md +11 -11
- package/templates/.claude/rules/MUST-continuous-improvement.md +2 -2
- package/templates/.claude/rules/MUST-intent-transparency.md +18 -18
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +192 -113
- package/templates/.claude/rules/MUST-parallel-execution.md +28 -28
- package/templates/.claude/rules/MUST-sync-verification.md +52 -45
- package/templates/.claude/rules/MUST-tool-identification.md +12 -14
- package/templates/.claude/rules/SHOULD-ecomode.md +3 -3
- package/templates/.claude/rules/SHOULD-hud-statusline.md +4 -4
- package/templates/.claude/rules/SHOULD-memory-integration.md +4 -4
- package/templates/.claude/rules/SHOULD-pipeline-mode.md +1 -1
- package/templates/.claude/skills/audit-agents/SKILL.md +116 -0
- package/templates/{skills/infrastructure → .claude/skills}/aws-best-practices/SKILL.md +4 -4
- package/templates/.claude/skills/create-agent/SKILL.md +91 -0
- package/templates/.claude/skills/dev-lead-routing/SKILL.md +238 -0
- package/templates/{commands/dev/refactor.md → .claude/skills/dev-refactor/SKILL.md} +17 -20
- package/templates/{commands/dev/review.md → .claude/skills/dev-review/SKILL.md} +16 -17
- package/templates/{agents/manager/supplier/refs/skills/infrastructure → .claude/skills}/docker-best-practices/SKILL.md +4 -4
- package/templates/{agents/manager/supplier/refs/skills/backend → .claude/skills}/fastapi-best-practices/SKILL.md +4 -4
- package/templates/.claude/skills/fix-refs/SKILL.md +107 -0
- package/templates/{agents/manager/supplier/refs/skills/backend → .claude/skills}/go-backend-best-practices/SKILL.md +4 -4
- package/templates/{skills/development → .claude/skills}/go-best-practices/SKILL.md +4 -4
- package/templates/{commands/system/help.md → .claude/skills/help/SKILL.md} +34 -46
- package/templates/{skills/orchestration → .claude/skills}/intent-detection/SKILL.md +14 -14
- package/templates/{agents/manager/supplier/refs/skills/orchestration → .claude/skills}/intent-detection/patterns/agent-triggers.yaml +117 -110
- package/templates/{agents/sw-engineer/language/kotlin-expert/refs → .claude/skills}/kotlin-best-practices/SKILL.md +4 -4
- package/templates/{commands/system/lists.md → .claude/skills/lists/SKILL.md} +25 -33
- package/templates/{agents/manager/supplier/refs/skills/system → .claude/skills}/memory-management/SKILL.md +10 -10
- package/templates/{commands/memory/recall.md → .claude/skills/memory-recall/SKILL.md} +31 -43
- package/templates/{commands/memory/save.md → .claude/skills/memory-save/SKILL.md} +27 -29
- package/templates/.claude/skills/npm-audit/SKILL.md +72 -0
- package/templates/.claude/skills/npm-publish/SKILL.md +63 -0
- package/templates/.claude/skills/npm-version/SKILL.md +75 -0
- package/templates/.claude/skills/optimize-analyze/SKILL.md +55 -0
- package/templates/.claude/skills/optimize-bundle/SKILL.md +67 -0
- package/templates/.claude/skills/optimize-report/SKILL.md +74 -0
- package/templates/{skills/orchestration → .claude/skills}/pipeline-execution/SKILL.md +4 -4
- package/templates/{commands/pipeline/list.md → .claude/skills/pipeline-list/SKILL.md} +11 -18
- package/templates/{commands/pipeline/run.md → .claude/skills/pipeline-run/SKILL.md} +38 -22
- package/templates/{agents/sw-engineer/language/python-expert/refs → .claude/skills}/python-best-practices/SKILL.md +4 -4
- package/templates/.claude/skills/qa-lead-routing/SKILL.md +277 -0
- package/templates/{skills/development → .claude/skills}/react-best-practices/SKILL.md +4 -4
- package/templates/{skills/system → .claude/skills}/result-aggregation/SKILL.md +17 -17
- package/templates/{agents/sw-engineer/language/rust-expert/refs → .claude/skills}/rust-best-practices/SKILL.md +4 -4
- package/templates/.claude/skills/sauron-watch/SKILL.md +144 -0
- package/templates/.claude/skills/secretary-routing/SKILL.md +178 -0
- package/templates/{skills/backend → .claude/skills}/springboot-best-practices/SKILL.md +4 -4
- package/templates/{commands/system/status.md → .claude/skills/status/SKILL.md} +29 -39
- package/templates/.claude/skills/supabase-postgres-best-practices/SKILL.md +98 -0
- package/templates/{skills/development → .claude/skills}/typescript-best-practices/SKILL.md +4 -4
- package/templates/{commands/updater/docs.md → .claude/skills/update-docs/SKILL.md} +71 -96
- package/templates/{commands/updater/external.md → .claude/skills/update-external/SKILL.md} +34 -99
- package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/vercel-deploy/SKILL.md +4 -4
- package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/web-design-guidelines/SKILL.md +4 -4
- package/templates/CLAUDE.md.en +75 -100
- package/templates/CLAUDE.md.ko +74 -99
- package/templates/guides/aws/index.yaml +1 -1
- package/templates/guides/docker/index.yaml +1 -1
- package/templates/guides/fastapi/index.yaml +1 -1
- package/templates/guides/go-backend/index.yaml +1 -1
- package/templates/guides/golang/index.yaml +1 -1
- package/templates/guides/index.yaml +9 -0
- package/templates/guides/kotlin/index.yaml +1 -1
- package/templates/guides/python/index.yaml +1 -1
- package/templates/guides/rust/index.yaml +1 -1
- package/templates/guides/springboot/index.yaml +1 -1
- package/templates/guides/supabase-postgres/README.md +32 -0
- package/templates/guides/supabase-postgres/index.yaml +19 -0
- package/templates/guides/typescript/index.yaml +1 -1
- package/templates/manifest.json +9 -15
- package/templates/pipelines/examples/code-review.yaml +1 -1
- package/templates/agents/index.yaml +0 -243
- package/templates/agents/infra-engineer/aws-expert/AGENT.md +0 -47
- package/templates/agents/infra-engineer/aws-expert/index.yaml +0 -27
- package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +0 -169
- package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +0 -26
- package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +0 -143
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +0 -279
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +0 -27
- package/templates/agents/infra-engineer/docker-expert/AGENT.md +0 -47
- package/templates/agents/infra-engineer/docker-expert/index.yaml +0 -27
- package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +0 -284
- package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +0 -262
- package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +0 -26
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +0 -274
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +0 -26
- package/templates/agents/manager/creator/AGENT.md +0 -274
- package/templates/agents/manager/creator/index.yaml +0 -66
- package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +0 -93
- package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +0 -107
- package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +0 -108
- package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +0 -132
- package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +0 -199
- package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +0 -62
- package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +0 -334
- package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +0 -398
- package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +0 -84
- package/templates/agents/manager/creator/refs/rules/MUST-safety.md +0 -69
- package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +0 -219
- package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +0 -174
- package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +0 -145
- package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +0 -102
- package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +0 -96
- package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +0 -103
- package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +0 -114
- package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +0 -165
- package/templates/agents/manager/creator/refs/rules/index.yaml +0 -125
- package/templates/agents/manager/gitnerd/index.yaml +0 -55
- package/templates/agents/manager/sauron/AGENT.md +0 -153
- package/templates/agents/manager/sauron/index.yaml +0 -52
- package/templates/agents/manager/supplier/index.yaml +0 -31
- package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +0 -169
- package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +0 -143
- package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +0 -42
- package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +0 -107
- package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +0 -90
- package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +0 -129
- package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +0 -165
- package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +0 -100
- package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +0 -58
- package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +0 -80
- package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +0 -89
- package/templates/agents/manager/supplier/refs/guides/claude-code/11-sub-agents.md +0 -159
- package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +0 -51
- package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +0 -284
- package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +0 -262
- package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +0 -232
- package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +0 -21
- package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +0 -243
- package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +0 -212
- package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +0 -282
- package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +0 -309
- package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +0 -250
- package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +0 -27
- package/templates/agents/manager/supplier/refs/guides/index.yaml +0 -101
- package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +0 -247
- package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +0 -234
- package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/python/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +0 -202
- package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +0 -79
- package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +0 -262
- package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +0 -180
- package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +0 -361
- package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +0 -22
- package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +0 -225
- package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +0 -219
- package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +0 -66
- package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +0 -20
- package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +0 -102
- package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +0 -93
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +0 -107
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +0 -108
- package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +0 -132
- package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +0 -199
- package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +0 -62
- package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +0 -334
- package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +0 -398
- package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +0 -84
- package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +0 -69
- package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +0 -219
- package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +0 -174
- package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +0 -145
- package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +0 -102
- package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +0 -96
- package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +0 -103
- package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +0 -114
- package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +0 -165
- package/templates/agents/manager/supplier/refs/rules/index.yaml +0 -125
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +0 -25
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +0 -356
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +0 -27
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +0 -202
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +0 -25
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +0 -255
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +0 -27
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +0 -221
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +0 -25
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +0 -100
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +0 -39
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +0 -266
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +0 -320
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +0 -28
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +0 -30
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +0 -34
- package/templates/agents/manager/supplier/refs/skills/index.yaml +0 -129
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +0 -279
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +0 -27
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +0 -26
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +0 -214
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +0 -30
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +0 -188
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +0 -27
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +0 -30
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +0 -163
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +0 -36
- package/templates/agents/manager/sync-checker/AGENT.md +0 -34
- package/templates/agents/manager/sync-checker/index.yaml +0 -32
- package/templates/agents/manager/updater/index.yaml +0 -31
- package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +0 -93
- package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +0 -107
- package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +0 -108
- package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +0 -132
- package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +0 -199
- package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +0 -62
- package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +0 -334
- package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +0 -398
- package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +0 -84
- package/templates/agents/manager/updater/refs/rules/MUST-safety.md +0 -69
- package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +0 -219
- package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +0 -174
- package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +0 -145
- package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +0 -102
- package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +0 -96
- package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +0 -103
- package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +0 -114
- package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +0 -165
- package/templates/agents/manager/updater/refs/rules/index.yaml +0 -125
- package/templates/agents/orchestrator/dev-lead/AGENT.md +0 -163
- package/templates/agents/orchestrator/dev-lead/index.yaml +0 -73
- package/templates/agents/orchestrator/planner/AGENT.md +0 -102
- package/templates/agents/orchestrator/planner/index.yaml +0 -38
- package/templates/agents/orchestrator/qa-lead/AGENT.md +0 -92
- package/templates/agents/orchestrator/qa-lead/index.yaml +0 -40
- package/templates/agents/orchestrator/secretary/AGENT.md +0 -181
- package/templates/agents/orchestrator/secretary/index.yaml +0 -55
- package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +0 -93
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +0 -107
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +0 -108
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +0 -132
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +0 -199
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +0 -62
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +0 -334
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +0 -398
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +0 -84
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +0 -69
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +0 -219
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +0 -174
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +0 -145
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +0 -102
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +0 -96
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +0 -103
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +0 -114
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +0 -165
- package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +0 -125
- package/templates/agents/qa-team/qa-engineer/index.yaml +0 -59
- package/templates/agents/qa-team/qa-planner/index.yaml +0 -47
- package/templates/agents/qa-team/qa-writer/index.yaml +0 -44
- package/templates/agents/sw-architect/documenter/index.yaml +0 -39
- package/templates/agents/sw-architect/speckit-agent/index.yaml +0 -78
- package/templates/agents/sw-engineer/backend/express-expert/AGENT.md +0 -132
- package/templates/agents/sw-engineer/backend/express-expert/index.yaml +0 -36
- package/templates/agents/sw-engineer/backend/fastapi-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/backend/fastapi-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +0 -232
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +0 -21
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +0 -269
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +0 -25
- package/templates/agents/sw-engineer/backend/go-backend-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/backend/go-backend-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +0 -26
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +0 -243
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +0 -212
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +0 -337
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +0 -26
- package/templates/agents/sw-engineer/backend/nestjs-expert/AGENT.md +0 -107
- package/templates/agents/sw-engineer/backend/nestjs-expert/index.yaml +0 -43
- package/templates/agents/sw-engineer/backend/springboot-expert/AGENT.md +0 -103
- package/templates/agents/sw-engineer/backend/springboot-expert/index.yaml +0 -69
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +0 -361
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +0 -22
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +0 -356
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +0 -27
- package/templates/agents/sw-engineer/frontend/svelte-agent/index.yaml +0 -41
- package/templates/agents/sw-engineer/frontend/vercel-agent/AGENT.md +0 -67
- package/templates/agents/sw-engineer/frontend/vercel-agent/index.yaml +0 -43
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +0 -100
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +0 -39
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +0 -73
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +0 -30
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +0 -66
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +0 -20
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +0 -102
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +0 -117
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +0 -34
- package/templates/agents/sw-engineer/frontend/vuejs-agent/index.yaml +0 -48
- package/templates/agents/sw-engineer/language/golang-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/language/golang-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +0 -202
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +0 -25
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +0 -282
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +0 -309
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +0 -250
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/java21-expert/AGENT.md +0 -122
- package/templates/agents/sw-engineer/language/java21-expert/index.yaml +0 -51
- package/templates/agents/sw-engineer/language/kotlin-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/language/kotlin-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +0 -247
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +0 -234
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +0 -26
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/python-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/language/python-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +0 -26
- package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +0 -202
- package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +0 -79
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +0 -25
- package/templates/agents/sw-engineer/language/rust-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/language/rust-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +0 -262
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +0 -26
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +0 -180
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +0 -26
- package/templates/agents/sw-engineer/language/typescript-expert/AGENT.md +0 -47
- package/templates/agents/sw-engineer/language/typescript-expert/index.yaml +0 -27
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +0 -225
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +0 -26
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +0 -219
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +0 -320
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +0 -28
- package/templates/agents/sw-engineer/tooling/bun-expert/index.yaml +0 -46
- package/templates/agents/sw-engineer/tooling/npm-expert/AGENT.md +0 -160
- package/templates/agents/sw-engineer/tooling/npm-expert/index.yaml +0 -45
- package/templates/agents/sw-engineer/tooling/optimizer/AGENT.md +0 -170
- package/templates/agents/sw-engineer/tooling/optimizer/index.yaml +0 -45
- package/templates/agents/system/memory-keeper/AGENT.md +0 -126
- package/templates/agents/system/memory-keeper/index.yaml +0 -45
- package/templates/agents/system/naggy/AGENT.md +0 -72
- package/templates/agents/system/naggy/index.yaml +0 -35
- package/templates/agents/tutor/go-tutor/index.yaml +0 -48
- package/templates/commands/COMMANDS.md +0 -136
- package/templates/commands/creator/agent.md +0 -121
- package/templates/commands/git/branch.yaml +0 -8
- package/templates/commands/git/commit.yaml +0 -4
- package/templates/commands/git/pr.yaml +0 -4
- package/templates/commands/git/status.yaml +0 -4
- package/templates/commands/git/sync.yaml +0 -4
- package/templates/commands/index.yaml +0 -225
- package/templates/commands/intent/explain.md +0 -144
- package/templates/commands/naggy/add.yaml +0 -8
- package/templates/commands/naggy/done.yaml +0 -8
- package/templates/commands/naggy/list.yaml +0 -4
- package/templates/commands/naggy/priority.yaml +0 -11
- package/templates/commands/naggy/remind.yaml +0 -4
- package/templates/commands/npm/audit.yaml +0 -62
- package/templates/commands/npm/publish.yaml +0 -52
- package/templates/commands/npm/version.yaml +0 -62
- package/templates/commands/optimize/analyze.yaml +0 -34
- package/templates/commands/optimize/bundle.yaml +0 -50
- package/templates/commands/optimize/report.yaml +0 -56
- package/templates/commands/sauron/quick.yaml +0 -4
- package/templates/commands/sauron/report.yaml +0 -4
- package/templates/commands/sauron/watch.yaml +0 -4
- package/templates/commands/supplier/audit.md +0 -133
- package/templates/commands/supplier/fix.md +0 -121
- package/templates/commands/sync/agents.yaml +0 -4
- package/templates/commands/sync/check.yaml +0 -4
- package/templates/commands/sync/commands.yaml +0 -4
- package/templates/commands/sync/docs.yaml +0 -4
- package/templates/commands/sync/fix.yaml +0 -4
- package/templates/skills/backend/fastapi-best-practices/SKILL.md +0 -269
- package/templates/skills/backend/fastapi-best-practices/index.yaml +0 -25
- package/templates/skills/backend/go-backend-best-practices/SKILL.md +0 -337
- package/templates/skills/backend/go-backend-best-practices/index.yaml +0 -26
- package/templates/skills/backend/springboot-best-practices/index.yaml +0 -27
- package/templates/skills/development/go-best-practices/index.yaml +0 -25
- package/templates/skills/development/kotlin-best-practices/SKILL.md +0 -255
- package/templates/skills/development/kotlin-best-practices/index.yaml +0 -27
- package/templates/skills/development/python-best-practices/SKILL.md +0 -221
- package/templates/skills/development/python-best-practices/index.yaml +0 -25
- package/templates/skills/development/react-best-practices/index.yaml +0 -39
- package/templates/skills/development/rust-best-practices/SKILL.md +0 -266
- package/templates/skills/development/rust-best-practices/index.yaml +0 -26
- package/templates/skills/development/typescript-best-practices/index.yaml +0 -28
- package/templates/skills/development/vercel-deploy/SKILL.md +0 -73
- package/templates/skills/development/vercel-deploy/index.yaml +0 -30
- package/templates/skills/development/web-design-guidelines/SKILL.md +0 -117
- package/templates/skills/development/web-design-guidelines/index.yaml +0 -34
- package/templates/skills/index.yaml +0 -129
- package/templates/skills/infrastructure/aws-best-practices/index.yaml +0 -27
- package/templates/skills/infrastructure/docker-best-practices/SKILL.md +0 -274
- package/templates/skills/infrastructure/docker-best-practices/index.yaml +0 -26
- package/templates/skills/orchestration/intent-detection/index.yaml +0 -30
- package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +0 -342
- package/templates/skills/orchestration/pipeline-execution/index.yaml +0 -27
- package/templates/skills/system/memory-management/SKILL.md +0 -194
- package/templates/skills/system/memory-management/index.yaml +0 -30
- package/templates/skills/system/result-aggregation/index.yaml +0 -36
package/dist/cli/index.js
CHANGED
|
@@ -12095,34 +12095,18 @@ async function countDirectories(dirPath) {
|
|
|
12095
12095
|
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
12096
12096
|
return entries.filter((e) => e.isDirectory()).length;
|
|
12097
12097
|
}
|
|
12098
|
-
async function
|
|
12098
|
+
async function countAgents(agentsDir) {
|
|
12099
12099
|
let count = 0;
|
|
12100
12100
|
try {
|
|
12101
|
-
const entries = await fs.readdir(
|
|
12101
|
+
const entries = await fs.readdir(agentsDir, { withFileTypes: true });
|
|
12102
12102
|
for (const entry of entries) {
|
|
12103
|
-
if (
|
|
12104
|
-
continue;
|
|
12105
|
-
const agentMdPath = path.join(typePath, entry.name, "AGENT.md");
|
|
12106
|
-
if (await pathExists(agentMdPath)) {
|
|
12103
|
+
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
12107
12104
|
count++;
|
|
12108
12105
|
}
|
|
12109
12106
|
}
|
|
12110
12107
|
} catch {}
|
|
12111
12108
|
return count;
|
|
12112
12109
|
}
|
|
12113
|
-
async function countAgents(agentsDir) {
|
|
12114
|
-
let count = 0;
|
|
12115
|
-
try {
|
|
12116
|
-
const typeEntries = await fs.readdir(agentsDir, { withFileTypes: true });
|
|
12117
|
-
for (const typeEntry of typeEntries) {
|
|
12118
|
-
if (!typeEntry.isDirectory())
|
|
12119
|
-
continue;
|
|
12120
|
-
const typePath = path.join(agentsDir, typeEntry.name);
|
|
12121
|
-
count += await countAgentsInTypeDir(typePath);
|
|
12122
|
-
}
|
|
12123
|
-
} catch {}
|
|
12124
|
-
return count;
|
|
12125
|
-
}
|
|
12126
12110
|
async function checkClaudeMd(targetDir) {
|
|
12127
12111
|
const claudeMdPath = path.join(targetDir, "CLAUDE.md");
|
|
12128
12112
|
const exists2 = await pathExists(claudeMdPath);
|
|
@@ -12161,7 +12145,7 @@ async function checkRules(targetDir) {
|
|
|
12161
12145
|
};
|
|
12162
12146
|
}
|
|
12163
12147
|
async function checkAgents(targetDir) {
|
|
12164
|
-
const agentsDir = path.join(targetDir, "agents");
|
|
12148
|
+
const agentsDir = path.join(targetDir, ".claude", "agents");
|
|
12165
12149
|
const exists2 = await isDirectory(agentsDir);
|
|
12166
12150
|
if (!exists2) {
|
|
12167
12151
|
return {
|
|
@@ -12188,17 +12172,8 @@ async function checkAgents(targetDir) {
|
|
|
12188
12172
|
};
|
|
12189
12173
|
}
|
|
12190
12174
|
async function checkSymlinks(targetDir) {
|
|
12191
|
-
const
|
|
12192
|
-
const skillsDir = path.join(targetDir, "skills");
|
|
12175
|
+
const skillsDir = path.join(targetDir, ".claude", "skills");
|
|
12193
12176
|
const brokenSymlinks = [];
|
|
12194
|
-
if (await isDirectory(agentsDir)) {
|
|
12195
|
-
const agentSymlinks = await findRefsSymlinks(agentsDir);
|
|
12196
|
-
for (const symlink of agentSymlinks) {
|
|
12197
|
-
if (!await isValidSymlink(symlink)) {
|
|
12198
|
-
brokenSymlinks.push(symlink);
|
|
12199
|
-
}
|
|
12200
|
-
}
|
|
12201
|
-
}
|
|
12202
12177
|
if (await isDirectory(skillsDir)) {
|
|
12203
12178
|
const skillSymlinks = await findRefsSymlinks(skillsDir);
|
|
12204
12179
|
for (const symlink of skillSymlinks) {
|
|
@@ -12259,7 +12234,7 @@ async function checkIndexFiles(targetDir) {
|
|
|
12259
12234
|
};
|
|
12260
12235
|
}
|
|
12261
12236
|
async function checkSkills(targetDir) {
|
|
12262
|
-
const skillsDir = path.join(targetDir, "skills");
|
|
12237
|
+
const skillsDir = path.join(targetDir, ".claude", "skills");
|
|
12263
12238
|
const exists2 = await isDirectory(skillsDir);
|
|
12264
12239
|
if (!exists2) {
|
|
12265
12240
|
return {
|
|
@@ -12285,6 +12260,105 @@ async function checkSkills(targetDir) {
|
|
|
12285
12260
|
fixable: false
|
|
12286
12261
|
};
|
|
12287
12262
|
}
|
|
12263
|
+
async function checkGuides(targetDir) {
|
|
12264
|
+
const guidesDir = path.join(targetDir, "guides");
|
|
12265
|
+
const exists2 = await isDirectory(guidesDir);
|
|
12266
|
+
if (!exists2) {
|
|
12267
|
+
return {
|
|
12268
|
+
name: "Guides",
|
|
12269
|
+
status: "fail",
|
|
12270
|
+
message: "guides/ directory not found",
|
|
12271
|
+
fixable: true
|
|
12272
|
+
};
|
|
12273
|
+
}
|
|
12274
|
+
const topicCount = await countDirectories(guidesDir);
|
|
12275
|
+
if (topicCount === 0) {
|
|
12276
|
+
return {
|
|
12277
|
+
name: "Guides",
|
|
12278
|
+
status: "warn",
|
|
12279
|
+
message: "guides/ directory is empty (0 topics found)",
|
|
12280
|
+
fixable: false
|
|
12281
|
+
};
|
|
12282
|
+
}
|
|
12283
|
+
return {
|
|
12284
|
+
name: "Guides",
|
|
12285
|
+
status: "pass",
|
|
12286
|
+
message: `Guides OK (${topicCount} topics)`,
|
|
12287
|
+
fixable: false
|
|
12288
|
+
};
|
|
12289
|
+
}
|
|
12290
|
+
async function checkHooks(targetDir) {
|
|
12291
|
+
const hooksDir = path.join(targetDir, ".claude", "hooks");
|
|
12292
|
+
const exists2 = await isDirectory(hooksDir);
|
|
12293
|
+
if (!exists2) {
|
|
12294
|
+
return {
|
|
12295
|
+
name: "Hooks",
|
|
12296
|
+
status: "fail",
|
|
12297
|
+
message: ".claude/hooks/ directory not found",
|
|
12298
|
+
fixable: true
|
|
12299
|
+
};
|
|
12300
|
+
}
|
|
12301
|
+
const hookFiles = await findFiles(hooksDir, /\.(sh|json|yaml)$/);
|
|
12302
|
+
if (hookFiles.length === 0) {
|
|
12303
|
+
return {
|
|
12304
|
+
name: "Hooks",
|
|
12305
|
+
status: "warn",
|
|
12306
|
+
message: ".claude/hooks/ directory is empty",
|
|
12307
|
+
fixable: false
|
|
12308
|
+
};
|
|
12309
|
+
}
|
|
12310
|
+
return {
|
|
12311
|
+
name: "Hooks",
|
|
12312
|
+
status: "pass",
|
|
12313
|
+
message: `Hooks OK (${hookFiles.length} files)`,
|
|
12314
|
+
fixable: false
|
|
12315
|
+
};
|
|
12316
|
+
}
|
|
12317
|
+
async function checkPipelines(targetDir) {
|
|
12318
|
+
const pipelinesDir = path.join(targetDir, "pipelines");
|
|
12319
|
+
const exists2 = await isDirectory(pipelinesDir);
|
|
12320
|
+
if (!exists2) {
|
|
12321
|
+
return {
|
|
12322
|
+
name: "Pipelines",
|
|
12323
|
+
status: "fail",
|
|
12324
|
+
message: "pipelines/ directory not found",
|
|
12325
|
+
fixable: true
|
|
12326
|
+
};
|
|
12327
|
+
}
|
|
12328
|
+
return {
|
|
12329
|
+
name: "Pipelines",
|
|
12330
|
+
status: "pass",
|
|
12331
|
+
message: "Pipelines OK",
|
|
12332
|
+
fixable: false
|
|
12333
|
+
};
|
|
12334
|
+
}
|
|
12335
|
+
async function checkContexts(targetDir) {
|
|
12336
|
+
const contextsDir = path.join(targetDir, ".claude", "contexts");
|
|
12337
|
+
const exists2 = await isDirectory(contextsDir);
|
|
12338
|
+
if (!exists2) {
|
|
12339
|
+
return {
|
|
12340
|
+
name: "Contexts",
|
|
12341
|
+
status: "fail",
|
|
12342
|
+
message: ".claude/contexts/ directory not found",
|
|
12343
|
+
fixable: true
|
|
12344
|
+
};
|
|
12345
|
+
}
|
|
12346
|
+
const contextFiles = await findFiles(contextsDir, /\.md$/);
|
|
12347
|
+
if (contextFiles.length === 0) {
|
|
12348
|
+
return {
|
|
12349
|
+
name: "Contexts",
|
|
12350
|
+
status: "warn",
|
|
12351
|
+
message: ".claude/contexts/ directory is empty",
|
|
12352
|
+
fixable: false
|
|
12353
|
+
};
|
|
12354
|
+
}
|
|
12355
|
+
return {
|
|
12356
|
+
name: "Contexts",
|
|
12357
|
+
status: "pass",
|
|
12358
|
+
message: `Contexts OK (${contextFiles.length} files)`,
|
|
12359
|
+
fixable: false
|
|
12360
|
+
};
|
|
12361
|
+
}
|
|
12288
12362
|
async function fixBrokenSymlinks(_targetDir, brokenSymlinks) {
|
|
12289
12363
|
let fixed = 0;
|
|
12290
12364
|
for (const symlink of brokenSymlinks) {
|
|
@@ -12306,8 +12380,12 @@ async function createMissingDirectory(dirPath) {
|
|
|
12306
12380
|
async function fixSingleIssue(check, targetDir) {
|
|
12307
12381
|
const fixMap = {
|
|
12308
12382
|
Rules: () => createMissingDirectory(path.join(targetDir, ".claude", "rules")),
|
|
12309
|
-
Agents: () => createMissingDirectory(path.join(targetDir, "agents")),
|
|
12310
|
-
Skills: () => createMissingDirectory(path.join(targetDir, "skills")),
|
|
12383
|
+
Agents: () => createMissingDirectory(path.join(targetDir, ".claude", "agents")),
|
|
12384
|
+
Skills: () => createMissingDirectory(path.join(targetDir, ".claude", "skills")),
|
|
12385
|
+
Guides: () => createMissingDirectory(path.join(targetDir, "guides")),
|
|
12386
|
+
Hooks: () => createMissingDirectory(path.join(targetDir, ".claude", "hooks")),
|
|
12387
|
+
Pipelines: () => createMissingDirectory(path.join(targetDir, "pipelines")),
|
|
12388
|
+
Contexts: () => createMissingDirectory(path.join(targetDir, ".claude", "contexts")),
|
|
12311
12389
|
Symlinks: async () => {
|
|
12312
12390
|
if (!check.details || check.details.length === 0)
|
|
12313
12391
|
return false;
|
|
@@ -12360,7 +12438,11 @@ async function doctorCommand(options = {}) {
|
|
|
12360
12438
|
checkAgents(targetDir),
|
|
12361
12439
|
checkSkills(targetDir),
|
|
12362
12440
|
checkSymlinks(targetDir),
|
|
12363
|
-
checkIndexFiles(targetDir)
|
|
12441
|
+
checkIndexFiles(targetDir),
|
|
12442
|
+
checkGuides(targetDir),
|
|
12443
|
+
checkHooks(targetDir),
|
|
12444
|
+
checkPipelines(targetDir),
|
|
12445
|
+
checkContexts(targetDir)
|
|
12364
12446
|
]);
|
|
12365
12447
|
if (options.fix) {
|
|
12366
12448
|
const hasFixableIssues = checks.some((c) => c.status === "fail" && c.fixable);
|
|
@@ -12830,37 +12912,20 @@ var DIRECTORY_STRUCTURE = [
|
|
|
12830
12912
|
".claude/rules",
|
|
12831
12913
|
".claude/hooks",
|
|
12832
12914
|
".claude/contexts",
|
|
12833
|
-
"agents",
|
|
12834
|
-
"
|
|
12835
|
-
"agents/orchestrator",
|
|
12836
|
-
"agents/manager",
|
|
12837
|
-
"agents/system",
|
|
12838
|
-
"agents/sw-engineer",
|
|
12839
|
-
"agents/sw-architect",
|
|
12840
|
-
"agents/backend-engineer",
|
|
12841
|
-
"agents/infra-engineer",
|
|
12842
|
-
"agents/qa-engineer",
|
|
12843
|
-
"agents/tutor",
|
|
12844
|
-
"skills",
|
|
12845
|
-
"skills/development",
|
|
12846
|
-
"skills/backend",
|
|
12847
|
-
"skills/infrastructure",
|
|
12848
|
-
"skills/system",
|
|
12849
|
-
"skills/orchestration",
|
|
12915
|
+
".claude/agents",
|
|
12916
|
+
".claude/skills",
|
|
12850
12917
|
"guides",
|
|
12851
12918
|
"pipelines",
|
|
12852
12919
|
"pipelines/templates",
|
|
12853
|
-
"pipelines/examples"
|
|
12854
|
-
"commands"
|
|
12920
|
+
"pipelines/examples"
|
|
12855
12921
|
];
|
|
12856
12922
|
var COMPONENT_PATHS = {
|
|
12857
12923
|
"claude-md": "",
|
|
12858
12924
|
rules: ".claude/rules",
|
|
12859
|
-
agents: "agents",
|
|
12860
|
-
skills: "skills",
|
|
12925
|
+
agents: ".claude/agents",
|
|
12926
|
+
skills: ".claude/skills",
|
|
12861
12927
|
guides: "guides",
|
|
12862
12928
|
pipelines: "pipelines",
|
|
12863
|
-
commands: "commands",
|
|
12864
12929
|
hooks: ".claude/hooks",
|
|
12865
12930
|
contexts: ".claude/contexts"
|
|
12866
12931
|
};
|
|
@@ -12973,7 +13038,7 @@ async function createDirectoryStructure(targetDir) {
|
|
|
12973
13038
|
}
|
|
12974
13039
|
}
|
|
12975
13040
|
function getAllComponents() {
|
|
12976
|
-
return ["rules", "agents", "skills", "guides", "pipelines", "
|
|
13041
|
+
return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
|
|
12977
13042
|
}
|
|
12978
13043
|
async function installComponent(targetDir, component, options) {
|
|
12979
13044
|
const templatePath = COMPONENT_PATHS[component];
|
|
@@ -13023,15 +13088,7 @@ async function backupExisting(sourcePath, backupDir) {
|
|
|
13023
13088
|
return backupPath;
|
|
13024
13089
|
}
|
|
13025
13090
|
async function checkExistingPaths(targetDir) {
|
|
13026
|
-
const pathsToCheck = [
|
|
13027
|
-
"CLAUDE.md",
|
|
13028
|
-
".claude",
|
|
13029
|
-
"agents",
|
|
13030
|
-
"skills",
|
|
13031
|
-
"guides",
|
|
13032
|
-
"pipelines",
|
|
13033
|
-
"commands"
|
|
13034
|
-
];
|
|
13091
|
+
const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
|
|
13035
13092
|
const existingPaths = [];
|
|
13036
13093
|
for (const relativePath of pathsToCheck) {
|
|
13037
13094
|
const fullPath = join3(targetDir, relativePath);
|
|
@@ -13192,14 +13249,26 @@ function parseYamlMetadata(content) {
|
|
|
13192
13249
|
}
|
|
13193
13250
|
return result;
|
|
13194
13251
|
}
|
|
13195
|
-
function
|
|
13196
|
-
const
|
|
13197
|
-
const
|
|
13198
|
-
|
|
13199
|
-
|
|
13252
|
+
function extractAgentTypeFromFilename(filename) {
|
|
13253
|
+
const name = basename2(filename, ".md");
|
|
13254
|
+
const prefixMap = {
|
|
13255
|
+
lang: "language",
|
|
13256
|
+
be: "backend",
|
|
13257
|
+
fe: "frontend",
|
|
13258
|
+
tool: "tooling",
|
|
13259
|
+
db: "database",
|
|
13260
|
+
arch: "architect",
|
|
13261
|
+
infra: "infrastructure",
|
|
13262
|
+
qa: "qa",
|
|
13263
|
+
mgr: "manager",
|
|
13264
|
+
sys: "system",
|
|
13265
|
+
tutor: "tutor"
|
|
13266
|
+
};
|
|
13267
|
+
const prefix = name.split("-")[0];
|
|
13268
|
+
return prefixMap[prefix] || "unknown";
|
|
13200
13269
|
}
|
|
13201
13270
|
function extractSkillCategoryFromPath(skillPath, baseDir) {
|
|
13202
|
-
const relativePath = relative(join5(baseDir, "skills"), skillPath);
|
|
13271
|
+
const relativePath = relative(join5(baseDir, ".claude", "skills"), skillPath);
|
|
13203
13272
|
const parts = relativePath.split("/").filter(Boolean);
|
|
13204
13273
|
return parts[0] || "unknown";
|
|
13205
13274
|
}
|
|
@@ -13213,28 +13282,67 @@ function extractRulePriorityFromFilename(filename) {
|
|
|
13213
13282
|
const parts = name.split("-");
|
|
13214
13283
|
return parts[0] || "unknown";
|
|
13215
13284
|
}
|
|
13285
|
+
function shouldSkipLine(trimmed, inFrontmatter) {
|
|
13286
|
+
if (inFrontmatter)
|
|
13287
|
+
return true;
|
|
13288
|
+
if (trimmed.startsWith("#"))
|
|
13289
|
+
return true;
|
|
13290
|
+
if (trimmed.startsWith("```"))
|
|
13291
|
+
return true;
|
|
13292
|
+
if (trimmed === "---")
|
|
13293
|
+
return true;
|
|
13294
|
+
return false;
|
|
13295
|
+
}
|
|
13296
|
+
function cleanMarkdownFormatting(text) {
|
|
13297
|
+
return text.replace(/\*\*/g, "").replace(/\*/g, "");
|
|
13298
|
+
}
|
|
13299
|
+
function truncateText(text, maxLength) {
|
|
13300
|
+
if (!maxLength || text.length <= maxLength)
|
|
13301
|
+
return text;
|
|
13302
|
+
return `${text.substring(0, maxLength)}...`;
|
|
13303
|
+
}
|
|
13304
|
+
function processDescription(text, options) {
|
|
13305
|
+
const cleaned = options.cleanFormatting ? cleanMarkdownFormatting(text) : text;
|
|
13306
|
+
return truncateText(cleaned, options.maxLength);
|
|
13307
|
+
}
|
|
13308
|
+
function extractFromBlockquote(trimmed, options) {
|
|
13309
|
+
const text = trimmed.replace(/^>\s*/, "").trim();
|
|
13310
|
+
return processDescription(text, options);
|
|
13311
|
+
}
|
|
13312
|
+
function* skipFrontmatter(lines) {
|
|
13313
|
+
let inFrontmatter = false;
|
|
13314
|
+
let lineIndex = 0;
|
|
13315
|
+
for (const line of lines) {
|
|
13316
|
+
const trimmed = line.trim();
|
|
13317
|
+
if (lineIndex === 0 && trimmed === "---") {
|
|
13318
|
+
inFrontmatter = true;
|
|
13319
|
+
lineIndex++;
|
|
13320
|
+
continue;
|
|
13321
|
+
}
|
|
13322
|
+
if (inFrontmatter && trimmed === "---") {
|
|
13323
|
+
inFrontmatter = false;
|
|
13324
|
+
lineIndex++;
|
|
13325
|
+
continue;
|
|
13326
|
+
}
|
|
13327
|
+
if (!inFrontmatter) {
|
|
13328
|
+
yield { trimmed, lineIndex };
|
|
13329
|
+
}
|
|
13330
|
+
lineIndex++;
|
|
13331
|
+
}
|
|
13332
|
+
}
|
|
13216
13333
|
function extractDescriptionFromMarkdown(content, options = {}) {
|
|
13217
13334
|
const { maxLength, cleanFormatting = false } = options;
|
|
13218
13335
|
const lines = content.split(`
|
|
13219
13336
|
`);
|
|
13220
|
-
for (const
|
|
13221
|
-
|
|
13222
|
-
if (trimmed.startsWith("#") || trimmed.startsWith("```") || trimmed.startsWith("---")) {
|
|
13337
|
+
for (const { trimmed } of skipFrontmatter(lines)) {
|
|
13338
|
+
if (shouldSkipLine(trimmed, false)) {
|
|
13223
13339
|
continue;
|
|
13224
13340
|
}
|
|
13225
13341
|
if (trimmed.startsWith(">")) {
|
|
13226
|
-
|
|
13227
|
-
if (cleanFormatting) {
|
|
13228
|
-
description = description.replace(/\*\*/g, "").replace(/\*/g, "");
|
|
13229
|
-
}
|
|
13230
|
-
return description;
|
|
13342
|
+
return extractFromBlockquote(trimmed, { cleanFormatting, maxLength });
|
|
13231
13343
|
}
|
|
13232
13344
|
if (trimmed) {
|
|
13233
|
-
|
|
13234
|
-
if (maxLength && description.length > maxLength) {
|
|
13235
|
-
description = `${description.substring(0, maxLength)}...`;
|
|
13236
|
-
}
|
|
13237
|
-
return description;
|
|
13345
|
+
return processDescription(trimmed, { cleanFormatting, maxLength });
|
|
13238
13346
|
}
|
|
13239
13347
|
}
|
|
13240
13348
|
return;
|
|
@@ -13259,22 +13367,21 @@ async function tryExtractMarkdownDescription(mdPath, options = {}) {
|
|
|
13259
13367
|
}
|
|
13260
13368
|
}
|
|
13261
13369
|
async function getAgents(targetDir) {
|
|
13262
|
-
const agentsDir = join5(targetDir, "agents");
|
|
13370
|
+
const agentsDir = join5(targetDir, ".claude", "agents");
|
|
13263
13371
|
if (!await fileExists(agentsDir))
|
|
13264
13372
|
return [];
|
|
13265
13373
|
try {
|
|
13266
|
-
const agentMdFiles = await listFiles(agentsDir, { recursive:
|
|
13374
|
+
const agentMdFiles = await listFiles(agentsDir, { recursive: false, pattern: "*.md" });
|
|
13267
13375
|
const agents = await Promise.all(agentMdFiles.map(async (agentMdPath) => {
|
|
13268
|
-
const
|
|
13269
|
-
const
|
|
13270
|
-
const
|
|
13271
|
-
const description = yamlDesc ?? await tryExtractMarkdownDescription(agentMdPath);
|
|
13376
|
+
const filename = basename2(agentMdPath);
|
|
13377
|
+
const name = basename2(filename, ".md");
|
|
13378
|
+
const description = await tryExtractMarkdownDescription(agentMdPath);
|
|
13272
13379
|
return {
|
|
13273
|
-
name
|
|
13274
|
-
type:
|
|
13275
|
-
path: relative(targetDir,
|
|
13380
|
+
name,
|
|
13381
|
+
type: extractAgentTypeFromFilename(filename),
|
|
13382
|
+
path: relative(targetDir, agentMdPath),
|
|
13276
13383
|
description,
|
|
13277
|
-
version
|
|
13384
|
+
version: undefined
|
|
13278
13385
|
};
|
|
13279
13386
|
}));
|
|
13280
13387
|
return agents.sort((a, b) => a.name.localeCompare(b.name));
|
|
@@ -13283,7 +13390,7 @@ async function getAgents(targetDir) {
|
|
|
13283
13390
|
}
|
|
13284
13391
|
}
|
|
13285
13392
|
async function getSkills(targetDir) {
|
|
13286
|
-
const skillsDir = join5(targetDir, "skills");
|
|
13393
|
+
const skillsDir = join5(targetDir, ".claude", "skills");
|
|
13287
13394
|
if (!await fileExists(skillsDir))
|
|
13288
13395
|
return [];
|
|
13289
13396
|
try {
|
|
@@ -13393,11 +13500,71 @@ ${type} (${components.length}):`);
|
|
|
13393
13500
|
function formatAsJson(components) {
|
|
13394
13501
|
console.log(JSON.stringify(components, null, 2));
|
|
13395
13502
|
}
|
|
13503
|
+
async function getHooks(targetDir) {
|
|
13504
|
+
const hooksDir = join5(targetDir, ".claude", "hooks");
|
|
13505
|
+
if (!await fileExists(hooksDir))
|
|
13506
|
+
return [];
|
|
13507
|
+
try {
|
|
13508
|
+
const hookFiles = await listFiles(hooksDir, { recursive: true, pattern: "*.sh" });
|
|
13509
|
+
const hookConfigs = await listFiles(hooksDir, { recursive: true, pattern: "*.json" });
|
|
13510
|
+
const hookYamls = await listFiles(hooksDir, { recursive: true, pattern: "*.yaml" });
|
|
13511
|
+
const allFiles = [...hookFiles, ...hookConfigs, ...hookYamls];
|
|
13512
|
+
return allFiles.map((hookPath) => ({
|
|
13513
|
+
name: basename2(hookPath),
|
|
13514
|
+
type: "hook",
|
|
13515
|
+
path: relative(targetDir, hookPath)
|
|
13516
|
+
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
13517
|
+
} catch {
|
|
13518
|
+
return [];
|
|
13519
|
+
}
|
|
13520
|
+
}
|
|
13521
|
+
async function getContexts(targetDir) {
|
|
13522
|
+
const contextsDir = join5(targetDir, ".claude", "contexts");
|
|
13523
|
+
if (!await fileExists(contextsDir))
|
|
13524
|
+
return [];
|
|
13525
|
+
try {
|
|
13526
|
+
const mdFiles = await listFiles(contextsDir, { recursive: false, pattern: "*.md" });
|
|
13527
|
+
const yamlFiles = await listFiles(contextsDir, { recursive: false, pattern: "*.yaml" });
|
|
13528
|
+
const allFiles = [...mdFiles, ...yamlFiles];
|
|
13529
|
+
const contexts = await Promise.all(allFiles.map(async (ctxPath) => {
|
|
13530
|
+
const ext = ctxPath.endsWith(".md") ? ".md" : ".yaml";
|
|
13531
|
+
const description = ext === ".md" ? await tryExtractMarkdownDescription(ctxPath, { maxLength: 100 }) : undefined;
|
|
13532
|
+
return {
|
|
13533
|
+
name: basename2(ctxPath, ext),
|
|
13534
|
+
type: "context",
|
|
13535
|
+
path: relative(targetDir, ctxPath),
|
|
13536
|
+
description
|
|
13537
|
+
};
|
|
13538
|
+
}));
|
|
13539
|
+
return contexts.sort((a, b) => a.name.localeCompare(b.name));
|
|
13540
|
+
} catch {
|
|
13541
|
+
return [];
|
|
13542
|
+
}
|
|
13543
|
+
}
|
|
13544
|
+
async function getPipelines(targetDir) {
|
|
13545
|
+
const pipelinesDir = join5(targetDir, "pipelines");
|
|
13546
|
+
if (!await fileExists(pipelinesDir))
|
|
13547
|
+
return [];
|
|
13548
|
+
try {
|
|
13549
|
+
const pipelineFiles = await listFiles(pipelinesDir, { recursive: true, pattern: "*.yaml" });
|
|
13550
|
+
return pipelineFiles.map((pipePath) => ({
|
|
13551
|
+
name: basename2(pipePath, ".yaml"),
|
|
13552
|
+
type: "pipeline",
|
|
13553
|
+
category: relative(join5(targetDir, "pipelines"), dirname2(pipePath)) || "root",
|
|
13554
|
+
path: relative(targetDir, pipePath)
|
|
13555
|
+
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
13556
|
+
} catch {
|
|
13557
|
+
return [];
|
|
13558
|
+
}
|
|
13559
|
+
}
|
|
13396
13560
|
var COMPONENT_GETTERS = {
|
|
13397
13561
|
agents: getAgents,
|
|
13398
13562
|
skills: getSkills,
|
|
13399
13563
|
guides: getGuides,
|
|
13400
|
-
rules: getRules
|
|
13564
|
+
rules: getRules,
|
|
13565
|
+
hooks: getHooks,
|
|
13566
|
+
contexts: getContexts,
|
|
13567
|
+
pipelines: getPipelines
|
|
13401
13568
|
};
|
|
13402
13569
|
function displayComponents(components, type, format) {
|
|
13403
13570
|
if (format === "json") {
|
|
@@ -13409,19 +13576,25 @@ function displayComponents(components, type, format) {
|
|
|
13409
13576
|
}
|
|
13410
13577
|
}
|
|
13411
13578
|
async function handleListAll(targetDir, format) {
|
|
13412
|
-
const [agents, skills, guides, rules] = await Promise.all([
|
|
13579
|
+
const [agents, skills, guides, rules, hooks, contexts, pipelines] = await Promise.all([
|
|
13413
13580
|
getAgents(targetDir),
|
|
13414
13581
|
getSkills(targetDir),
|
|
13415
13582
|
getGuides(targetDir),
|
|
13416
|
-
getRules(targetDir)
|
|
13583
|
+
getRules(targetDir),
|
|
13584
|
+
getHooks(targetDir),
|
|
13585
|
+
getContexts(targetDir),
|
|
13586
|
+
getPipelines(targetDir)
|
|
13417
13587
|
]);
|
|
13418
13588
|
if (format !== "json") {
|
|
13419
13589
|
displayComponents(agents, "agents", format);
|
|
13420
13590
|
displayComponents(skills, "skills", format);
|
|
13421
13591
|
displayComponents(guides, "guides", format);
|
|
13422
13592
|
displayComponents(rules, "rules", format);
|
|
13593
|
+
displayComponents(hooks, "hooks", format);
|
|
13594
|
+
displayComponents(contexts, "contexts", format);
|
|
13595
|
+
displayComponents(pipelines, "pipelines", format);
|
|
13423
13596
|
}
|
|
13424
|
-
return [...agents, ...skills, ...guides, ...rules];
|
|
13597
|
+
return [...agents, ...skills, ...guides, ...rules, ...hooks, ...contexts, ...pipelines];
|
|
13425
13598
|
}
|
|
13426
13599
|
async function listCommand(type = "all", options = {}) {
|
|
13427
13600
|
const targetDir = process.cwd();
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
-
for (let key of __getOwnPropNames(mod))
|
|
11
|
-
if (!__hasOwnProp.call(to, key))
|
|
12
|
-
__defProp(to, key, {
|
|
13
|
-
get: () => mod[key],
|
|
14
|
-
enumerable: true
|
|
15
|
-
});
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
19
3
|
|
|
20
4
|
// src/core/config.ts
|
|
@@ -422,37 +406,20 @@ var DIRECTORY_STRUCTURE = [
|
|
|
422
406
|
".claude/rules",
|
|
423
407
|
".claude/hooks",
|
|
424
408
|
".claude/contexts",
|
|
425
|
-
"agents",
|
|
426
|
-
"
|
|
427
|
-
"agents/orchestrator",
|
|
428
|
-
"agents/manager",
|
|
429
|
-
"agents/system",
|
|
430
|
-
"agents/sw-engineer",
|
|
431
|
-
"agents/sw-architect",
|
|
432
|
-
"agents/backend-engineer",
|
|
433
|
-
"agents/infra-engineer",
|
|
434
|
-
"agents/qa-engineer",
|
|
435
|
-
"agents/tutor",
|
|
436
|
-
"skills",
|
|
437
|
-
"skills/development",
|
|
438
|
-
"skills/backend",
|
|
439
|
-
"skills/infrastructure",
|
|
440
|
-
"skills/system",
|
|
441
|
-
"skills/orchestration",
|
|
409
|
+
".claude/agents",
|
|
410
|
+
".claude/skills",
|
|
442
411
|
"guides",
|
|
443
412
|
"pipelines",
|
|
444
413
|
"pipelines/templates",
|
|
445
|
-
"pipelines/examples"
|
|
446
|
-
"commands"
|
|
414
|
+
"pipelines/examples"
|
|
447
415
|
];
|
|
448
416
|
var COMPONENT_PATHS = {
|
|
449
417
|
"claude-md": "",
|
|
450
418
|
rules: ".claude/rules",
|
|
451
|
-
agents: "agents",
|
|
452
|
-
skills: "skills",
|
|
419
|
+
agents: ".claude/agents",
|
|
420
|
+
skills: ".claude/skills",
|
|
453
421
|
guides: "guides",
|
|
454
422
|
pipelines: "pipelines",
|
|
455
|
-
commands: "commands",
|
|
456
423
|
hooks: ".claude/hooks",
|
|
457
424
|
contexts: ".claude/contexts"
|
|
458
425
|
};
|
|
@@ -592,7 +559,7 @@ async function getTemplateManifest() {
|
|
|
592
559
|
};
|
|
593
560
|
}
|
|
594
561
|
function getAllComponents() {
|
|
595
|
-
return ["rules", "agents", "skills", "guides", "pipelines", "
|
|
562
|
+
return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
|
|
596
563
|
}
|
|
597
564
|
async function installComponent(targetDir, component, options) {
|
|
598
565
|
const templatePath = COMPONENT_PATHS[component];
|
|
@@ -642,15 +609,7 @@ async function backupExisting(sourcePath, backupDir) {
|
|
|
642
609
|
return backupPath;
|
|
643
610
|
}
|
|
644
611
|
async function checkExistingPaths(targetDir) {
|
|
645
|
-
const pathsToCheck = [
|
|
646
|
-
"CLAUDE.md",
|
|
647
|
-
".claude",
|
|
648
|
-
"agents",
|
|
649
|
-
"skills",
|
|
650
|
-
"guides",
|
|
651
|
-
"pipelines",
|
|
652
|
-
"commands"
|
|
653
|
-
];
|
|
612
|
+
const pathsToCheck = ["CLAUDE.md", ".claude", "guides", "pipelines"];
|
|
654
613
|
const existingPaths = [];
|
|
655
614
|
for (const relativePath of pathsToCheck) {
|
|
656
615
|
const fullPath = join3(targetDir, relativePath);
|
|
@@ -805,7 +764,7 @@ async function preserveCustomizations(targetDir, customizations) {
|
|
|
805
764
|
return preserved;
|
|
806
765
|
}
|
|
807
766
|
function getAllUpdateComponents() {
|
|
808
|
-
return ["rules", "agents", "skills", "guides", "pipelines", "
|
|
767
|
+
return ["rules", "agents", "skills", "guides", "pipelines", "hooks", "contexts"];
|
|
809
768
|
}
|
|
810
769
|
async function getLatestVersion() {
|
|
811
770
|
const manifestPath = resolveTemplatePath("manifest.json");
|
|
@@ -850,11 +809,10 @@ async function updateComponent(targetDir, component, customizations, options) {
|
|
|
850
809
|
function getComponentPath(component) {
|
|
851
810
|
const paths = {
|
|
852
811
|
rules: ".claude/rules",
|
|
853
|
-
agents: "agents",
|
|
854
|
-
skills: "skills",
|
|
812
|
+
agents: ".claude/agents",
|
|
813
|
+
skills: ".claude/skills",
|
|
855
814
|
guides: "guides",
|
|
856
815
|
pipelines: "pipelines",
|
|
857
|
-
commands: "commands",
|
|
858
816
|
hooks: ".claude/hooks",
|
|
859
817
|
contexts: ".claude/contexts"
|
|
860
818
|
};
|
|
@@ -865,7 +823,7 @@ async function backupInstallation(targetDir) {
|
|
|
865
823
|
const backupDir = join4(targetDir, `.omcustom-backup-${timestamp}`);
|
|
866
824
|
const fs = await import("node:fs/promises");
|
|
867
825
|
await ensureDirectory(backupDir);
|
|
868
|
-
const dirsToBackup = [".claude", "
|
|
826
|
+
const dirsToBackup = [".claude", "guides", "pipelines"];
|
|
869
827
|
for (const dir of dirsToBackup) {
|
|
870
828
|
const srcPath = join4(targetDir, dir);
|
|
871
829
|
if (await fileExists(srcPath)) {
|