oh-my-customcode 0.1.3 → 0.2.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/README.md +80 -129
- package/dist/cli/index.js +95 -95
- package/dist/index.js +7 -32
- 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 +197 -111
- package/templates/.claude/rules/MUST-parallel-execution.md +86 -29
- package/templates/.claude/rules/MUST-sync-verification.md +52 -45
- package/templates/.claude/rules/MUST-tool-identification.md +79 -19
- package/templates/.claude/rules/SHOULD-ecomode.md +3 -3
- package/templates/.claude/rules/SHOULD-hud-statusline.md +12 -5
- 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/{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 +71 -70
- package/templates/CLAUDE.md.ko +64 -64
- package/templates/examples/code-review.yaml +66 -0
- package/templates/guides/aws/index.yaml +1 -1
- package/templates/guides/claude-code/11-sub-agents.md +159 -0
- 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/index.yaml +18 -0
- package/templates/manifest.json +11 -17
- package/templates/pipelines/examples/code-review.yaml +1 -1
- package/templates/templates/pipeline-template.yaml +50 -0
- 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 -291
- package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +0 -341
- 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 -112
- 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 -89
- 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/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 -291
- package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +0 -341
- 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 -112
- 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 -89
- 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/SKILL.md +0 -337
- 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 -291
- package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +0 -341
- 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 -112
- 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 -89
- 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 -116
- 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 -132
- 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 -291
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +0 -341
- 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 -112
- 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 -89
- 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/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
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
# Effective Go Reference
|
|
2
|
-
|
|
3
|
-
> Source: https://go.dev/doc/effective_go
|
|
4
|
-
|
|
5
|
-
## Introduction
|
|
6
|
-
|
|
7
|
-
Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go.
|
|
8
|
-
|
|
9
|
-
## Formatting
|
|
10
|
-
|
|
11
|
-
Use `gofmt` (or `goimports`) to format all Go code. This eliminates formatting debates and ensures consistency.
|
|
12
|
-
|
|
13
|
-
Key points:
|
|
14
|
-
- Indentation: tabs, not spaces
|
|
15
|
-
- No line length limit (but break long lines sensibly)
|
|
16
|
-
- Fewer parentheses than C/Java
|
|
17
|
-
|
|
18
|
-
## Commentary
|
|
19
|
-
|
|
20
|
-
Go provides C-style `/* */` block comments and C++-style `//` line comments.
|
|
21
|
-
|
|
22
|
-
- Package comments: precede package clause, block comment for multi-line
|
|
23
|
-
- Doc comments: precede declarations, complete sentences starting with name
|
|
24
|
-
- `godoc` extracts documentation from comments
|
|
25
|
-
|
|
26
|
-
Example:
|
|
27
|
-
```go
|
|
28
|
-
// Package regexp implements a simple library for regular expressions.
|
|
29
|
-
package regexp
|
|
30
|
-
|
|
31
|
-
// Compile parses a regular expression and returns, if successful,
|
|
32
|
-
// a Regexp that can be used to match against text.
|
|
33
|
-
func Compile(str string) (*Regexp, error) {
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Names
|
|
37
|
-
|
|
38
|
-
### Package Names
|
|
39
|
-
|
|
40
|
-
- Short, concise, lowercase, single-word names
|
|
41
|
-
- No underscores or mixedCaps
|
|
42
|
-
- Name is the base name of its source directory
|
|
43
|
-
- Don't stutter: `bufio.Reader`, not `bufio.BufReader`
|
|
44
|
-
|
|
45
|
-
### Getters
|
|
46
|
-
|
|
47
|
-
- Don't use "Get" prefix
|
|
48
|
-
- `owner := obj.Owner()` not `obj.GetOwner()`
|
|
49
|
-
- Setters can use "Set": `obj.SetOwner(user)`
|
|
50
|
-
|
|
51
|
-
### Interface Names
|
|
52
|
-
|
|
53
|
-
- One-method interfaces: method name + "-er" suffix
|
|
54
|
-
- `Reader`, `Writer`, `Formatter`, `Notifier`
|
|
55
|
-
|
|
56
|
-
### MixedCaps
|
|
57
|
-
|
|
58
|
-
- Use `MixedCaps` or `mixedCaps` rather than underscores
|
|
59
|
-
- Exported: `MixedCaps` (capital first letter)
|
|
60
|
-
- Unexported: `mixedCaps` (lowercase first letter)
|
|
61
|
-
|
|
62
|
-
## Control Structures
|
|
63
|
-
|
|
64
|
-
### If
|
|
65
|
-
|
|
66
|
-
```go
|
|
67
|
-
// With initialization statement
|
|
68
|
-
if err := file.Chmod(0664); err != nil {
|
|
69
|
-
log.Print(err)
|
|
70
|
-
return err
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Avoid unnecessary else
|
|
74
|
-
if err != nil {
|
|
75
|
-
return err
|
|
76
|
-
}
|
|
77
|
-
// continue normal flow
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### For
|
|
81
|
-
|
|
82
|
-
```go
|
|
83
|
-
// Like C's for
|
|
84
|
-
for init; condition; post { }
|
|
85
|
-
|
|
86
|
-
// Like C's while
|
|
87
|
-
for condition { }
|
|
88
|
-
|
|
89
|
-
// Like C's for(;;)
|
|
90
|
-
for { }
|
|
91
|
-
|
|
92
|
-
// Range over slice
|
|
93
|
-
for key, value := range oldMap {
|
|
94
|
-
newMap[key] = value
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Range over string (runes)
|
|
98
|
-
for pos, char := range "日本語" {
|
|
99
|
-
fmt.Printf("character %c starts at byte position %d\n", char, pos)
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Switch
|
|
104
|
-
|
|
105
|
-
```go
|
|
106
|
-
// No automatic fallthrough
|
|
107
|
-
switch c {
|
|
108
|
-
case ' ', '?', '&', '=', '#', '+', '%':
|
|
109
|
-
return true
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Type switch
|
|
113
|
-
switch t := t.(type) {
|
|
114
|
-
case bool:
|
|
115
|
-
fmt.Printf("boolean %t\n", t)
|
|
116
|
-
case int:
|
|
117
|
-
fmt.Printf("integer %d\n", t)
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Functions
|
|
122
|
-
|
|
123
|
-
### Multiple Return Values
|
|
124
|
-
|
|
125
|
-
```go
|
|
126
|
-
func (file *File) Write(b []byte) (n int, err error)
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Named Result Parameters
|
|
130
|
-
|
|
131
|
-
```go
|
|
132
|
-
func ReadFull(r Reader, buf []byte) (n int, err error) {
|
|
133
|
-
for len(buf) > 0 && err == nil {
|
|
134
|
-
var nr int
|
|
135
|
-
nr, err = r.Read(buf)
|
|
136
|
-
n += nr
|
|
137
|
-
buf = buf[nr:]
|
|
138
|
-
}
|
|
139
|
-
return
|
|
140
|
-
}
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Defer
|
|
144
|
-
|
|
145
|
-
```go
|
|
146
|
-
func Contents(filename string) (string, error) {
|
|
147
|
-
f, err := os.Open(filename)
|
|
148
|
-
if err != nil {
|
|
149
|
-
return "", err
|
|
150
|
-
}
|
|
151
|
-
defer f.Close() // f.Close will run when we're finished.
|
|
152
|
-
// ...
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Data
|
|
157
|
-
|
|
158
|
-
### Allocation with new
|
|
159
|
-
|
|
160
|
-
`new(T)` allocates zeroed storage for a new item of type `T` and returns its address, a value of type `*T`.
|
|
161
|
-
|
|
162
|
-
```go
|
|
163
|
-
p := new(SyncedBuffer) // type *SyncedBuffer
|
|
164
|
-
var v SyncedBuffer // type SyncedBuffer
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Allocation with make
|
|
168
|
-
|
|
169
|
-
`make(T, args)` creates slices, maps, and channels only. It returns an initialized (not zeroed) value of type `T` (not `*T`).
|
|
170
|
-
|
|
171
|
-
```go
|
|
172
|
-
make([]int, 10, 100) // slice with len=10, cap=100
|
|
173
|
-
make(map[string]int) // map
|
|
174
|
-
make(chan int, 100) // buffered channel
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Arrays and Slices
|
|
178
|
-
|
|
179
|
-
```go
|
|
180
|
-
// Array - fixed size, value type
|
|
181
|
-
var a [10]int
|
|
182
|
-
|
|
183
|
-
// Slice - dynamic size, reference to array
|
|
184
|
-
s := make([]int, 10)
|
|
185
|
-
s = append(s, 1, 2, 3)
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Maps
|
|
189
|
-
|
|
190
|
-
```go
|
|
191
|
-
m := make(map[string]int)
|
|
192
|
-
m["key"] = 42
|
|
193
|
-
|
|
194
|
-
// Comma ok idiom
|
|
195
|
-
if val, ok := m["key"]; ok {
|
|
196
|
-
// key exists
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
delete(m, "key")
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
## Methods
|
|
203
|
-
|
|
204
|
-
### Pointer vs Value Receivers
|
|
205
|
-
|
|
206
|
-
```go
|
|
207
|
-
// Value receiver - operates on copy
|
|
208
|
-
func (s MyStruct) ValueMethod() { }
|
|
209
|
-
|
|
210
|
-
// Pointer receiver - can modify, avoids copy
|
|
211
|
-
func (s *MyStruct) PointerMethod() { }
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
Rule: If any method needs a pointer receiver, all methods on that type should have pointer receivers.
|
|
215
|
-
|
|
216
|
-
## Interfaces
|
|
217
|
-
|
|
218
|
-
```go
|
|
219
|
-
type Reader interface {
|
|
220
|
-
Read(p []byte) (n int, err error)
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
type Writer interface {
|
|
224
|
-
Write(p []byte) (n int, err error)
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Composition
|
|
228
|
-
type ReadWriter interface {
|
|
229
|
-
Reader
|
|
230
|
-
Writer
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Embedding
|
|
235
|
-
|
|
236
|
-
```go
|
|
237
|
-
type ReadWriter struct {
|
|
238
|
-
*Reader // embedded
|
|
239
|
-
*Writer // embedded
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
## Concurrency
|
|
244
|
-
|
|
245
|
-
### Goroutines
|
|
246
|
-
|
|
247
|
-
```go
|
|
248
|
-
go list.Sort() // run list.Sort concurrently
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Channels
|
|
252
|
-
|
|
253
|
-
```go
|
|
254
|
-
ci := make(chan int) // unbuffered channel of integers
|
|
255
|
-
cj := make(chan int, 0) // unbuffered channel of integers
|
|
256
|
-
cs := make(chan *os.File, 100) // buffered channel of pointers to Files
|
|
257
|
-
|
|
258
|
-
c <- 1 // send
|
|
259
|
-
v := <-c // receive
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Select
|
|
263
|
-
|
|
264
|
-
```go
|
|
265
|
-
select {
|
|
266
|
-
case v := <-ch1:
|
|
267
|
-
fmt.Println("received from ch1:", v)
|
|
268
|
-
case ch2 <- 42:
|
|
269
|
-
fmt.Println("sent to ch2")
|
|
270
|
-
default:
|
|
271
|
-
fmt.Println("no communication")
|
|
272
|
-
}
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
## Errors
|
|
276
|
-
|
|
277
|
-
```go
|
|
278
|
-
type error interface {
|
|
279
|
-
Error() string
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Creating errors
|
|
283
|
-
errors.New("message")
|
|
284
|
-
fmt.Errorf("operation failed: %w", err)
|
|
285
|
-
|
|
286
|
-
// Checking errors
|
|
287
|
-
if err != nil {
|
|
288
|
-
return err
|
|
289
|
-
}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
## Panic and Recover
|
|
293
|
-
|
|
294
|
-
```go
|
|
295
|
-
func server(workChan <-chan *Work) {
|
|
296
|
-
for work := range workChan {
|
|
297
|
-
go safelyDo(work)
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
func safelyDo(work *Work) {
|
|
302
|
-
defer func() {
|
|
303
|
-
if err := recover(); err != nil {
|
|
304
|
-
log.Println("work failed:", err)
|
|
305
|
-
}
|
|
306
|
-
}()
|
|
307
|
-
do(work)
|
|
308
|
-
}
|
|
309
|
-
```
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
# Go Error Handling
|
|
2
|
-
|
|
3
|
-
> Reference for error handling patterns in Go
|
|
4
|
-
|
|
5
|
-
## Error Interface
|
|
6
|
-
|
|
7
|
-
```go
|
|
8
|
-
type error interface {
|
|
9
|
-
Error() string
|
|
10
|
-
}
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Errors are values. They can be stored, passed, and compared.
|
|
14
|
-
|
|
15
|
-
## Creating Errors
|
|
16
|
-
|
|
17
|
-
### Simple Errors
|
|
18
|
-
|
|
19
|
-
```go
|
|
20
|
-
import "errors"
|
|
21
|
-
|
|
22
|
-
err := errors.New("something went wrong")
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### Formatted Errors
|
|
26
|
-
|
|
27
|
-
```go
|
|
28
|
-
import "fmt"
|
|
29
|
-
|
|
30
|
-
err := fmt.Errorf("failed to process %s: %v", filename, err)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Custom Error Types
|
|
34
|
-
|
|
35
|
-
```go
|
|
36
|
-
type MyError struct {
|
|
37
|
-
Code int
|
|
38
|
-
Message string
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
func (e *MyError) Error() string {
|
|
42
|
-
return fmt.Sprintf("error %d: %s", e.Code, e.Message)
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Handling Errors
|
|
47
|
-
|
|
48
|
-
### Basic Pattern
|
|
49
|
-
|
|
50
|
-
```go
|
|
51
|
-
result, err := doSomething()
|
|
52
|
-
if err != nil {
|
|
53
|
-
return err
|
|
54
|
-
}
|
|
55
|
-
// use result
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Adding Context
|
|
59
|
-
|
|
60
|
-
```go
|
|
61
|
-
result, err := doSomething()
|
|
62
|
-
if err != nil {
|
|
63
|
-
return fmt.Errorf("doSomething failed: %w", err)
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Multiple Returns
|
|
68
|
-
|
|
69
|
-
```go
|
|
70
|
-
func divide(a, b float64) (float64, error) {
|
|
71
|
-
if b == 0 {
|
|
72
|
-
return 0, errors.New("division by zero")
|
|
73
|
-
}
|
|
74
|
-
return a / b, nil
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Error Wrapping (Go 1.13+)
|
|
79
|
-
|
|
80
|
-
### Wrapping Errors
|
|
81
|
-
|
|
82
|
-
```go
|
|
83
|
-
// Use %w verb to wrap
|
|
84
|
-
if err != nil {
|
|
85
|
-
return fmt.Errorf("operation failed: %w", err)
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Unwrapping Errors
|
|
90
|
-
|
|
91
|
-
```go
|
|
92
|
-
// errors.Unwrap returns the wrapped error
|
|
93
|
-
inner := errors.Unwrap(err)
|
|
94
|
-
|
|
95
|
-
// errors.Is checks if any error in chain matches
|
|
96
|
-
if errors.Is(err, os.ErrNotExist) {
|
|
97
|
-
// handle file not found
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// errors.As finds first error matching type
|
|
101
|
-
var pathErr *os.PathError
|
|
102
|
-
if errors.As(err, &pathErr) {
|
|
103
|
-
fmt.Println("failed path:", pathErr.Path)
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Sentinel Errors
|
|
108
|
-
|
|
109
|
-
```go
|
|
110
|
-
var (
|
|
111
|
-
ErrNotFound = errors.New("not found")
|
|
112
|
-
ErrUnauthorized = errors.New("unauthorized")
|
|
113
|
-
ErrInvalid = errors.New("invalid input")
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
func fetch(id string) (*Item, error) {
|
|
117
|
-
item, ok := store[id]
|
|
118
|
-
if !ok {
|
|
119
|
-
return nil, ErrNotFound
|
|
120
|
-
}
|
|
121
|
-
return item, nil
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Usage
|
|
125
|
-
item, err := fetch("123")
|
|
126
|
-
if errors.Is(err, ErrNotFound) {
|
|
127
|
-
// handle not found
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Error Handling Strategies
|
|
132
|
-
|
|
133
|
-
### Fail Fast
|
|
134
|
-
|
|
135
|
-
```go
|
|
136
|
-
func process() error {
|
|
137
|
-
if err := step1(); err != nil {
|
|
138
|
-
return err
|
|
139
|
-
}
|
|
140
|
-
if err := step2(); err != nil {
|
|
141
|
-
return err
|
|
142
|
-
}
|
|
143
|
-
return step3()
|
|
144
|
-
}
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### Deferred Cleanup
|
|
148
|
-
|
|
149
|
-
```go
|
|
150
|
-
func processFile(path string) (err error) {
|
|
151
|
-
f, err := os.Open(path)
|
|
152
|
-
if err != nil {
|
|
153
|
-
return err
|
|
154
|
-
}
|
|
155
|
-
defer func() {
|
|
156
|
-
if cerr := f.Close(); cerr != nil && err == nil {
|
|
157
|
-
err = cerr
|
|
158
|
-
}
|
|
159
|
-
}()
|
|
160
|
-
// process file
|
|
161
|
-
return nil
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Error Aggregation
|
|
166
|
-
|
|
167
|
-
```go
|
|
168
|
-
type MultiError []error
|
|
169
|
-
|
|
170
|
-
func (m MultiError) Error() string {
|
|
171
|
-
var msgs []string
|
|
172
|
-
for _, err := range m {
|
|
173
|
-
msgs = append(msgs, err.Error())
|
|
174
|
-
}
|
|
175
|
-
return strings.Join(msgs, "; ")
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
func validateAll(items []Item) error {
|
|
179
|
-
var errs MultiError
|
|
180
|
-
for _, item := range items {
|
|
181
|
-
if err := validate(item); err != nil {
|
|
182
|
-
errs = append(errs, err)
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if len(errs) > 0 {
|
|
186
|
-
return errs
|
|
187
|
-
}
|
|
188
|
-
return nil
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Panic and Recover
|
|
193
|
-
|
|
194
|
-
### When to Panic
|
|
195
|
-
|
|
196
|
-
- Unrecoverable errors during initialization
|
|
197
|
-
- Programming errors (nil pointer, out of bounds)
|
|
198
|
-
- Violation of invariants
|
|
199
|
-
|
|
200
|
-
```go
|
|
201
|
-
func MustCompile(pattern string) *Regexp {
|
|
202
|
-
re, err := Compile(pattern)
|
|
203
|
-
if err != nil {
|
|
204
|
-
panic(err)
|
|
205
|
-
}
|
|
206
|
-
return re
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Recovering from Panic
|
|
211
|
-
|
|
212
|
-
```go
|
|
213
|
-
func safeCall(fn func()) (err error) {
|
|
214
|
-
defer func() {
|
|
215
|
-
if r := recover(); r != nil {
|
|
216
|
-
err = fmt.Errorf("panic recovered: %v", r)
|
|
217
|
-
}
|
|
218
|
-
}()
|
|
219
|
-
fn()
|
|
220
|
-
return nil
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
### Package Boundary Rule
|
|
225
|
-
|
|
226
|
-
- Convert panics to errors at package boundaries
|
|
227
|
-
- Don't let panics escape your API
|
|
228
|
-
|
|
229
|
-
```go
|
|
230
|
-
func (s *Server) handleRequest(w http.ResponseWriter, r *http.Request) {
|
|
231
|
-
defer func() {
|
|
232
|
-
if err := recover(); err != nil {
|
|
233
|
-
log.Printf("panic: %v\n%s", err, debug.Stack())
|
|
234
|
-
http.Error(w, "Internal Server Error", 500)
|
|
235
|
-
}
|
|
236
|
-
}()
|
|
237
|
-
// handle request
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
## Best Practices
|
|
242
|
-
|
|
243
|
-
1. **Handle errors immediately** after the call
|
|
244
|
-
2. **Add context** when propagating errors
|
|
245
|
-
3. **Use error wrapping** with `%w` for error chains
|
|
246
|
-
4. **Define sentinel errors** for known conditions
|
|
247
|
-
5. **Don't ignore errors** (at minimum, log them)
|
|
248
|
-
6. **Prefer errors over panics** in library code
|
|
249
|
-
7. **Document error returns** in function comments
|
|
250
|
-
8. **Test error paths** as thoroughly as success paths
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Golang Guide
|
|
2
|
-
|
|
3
|
-
metadata:
|
|
4
|
-
name: golang
|
|
5
|
-
description: Go language reference documentation
|
|
6
|
-
|
|
7
|
-
source:
|
|
8
|
-
type: external
|
|
9
|
-
origin: go.dev
|
|
10
|
-
url: https://go.dev/doc/effective_go
|
|
11
|
-
last_fetched: "2026-01-22"
|
|
12
|
-
|
|
13
|
-
documents:
|
|
14
|
-
- name: effective-go
|
|
15
|
-
path: ./effective-go.md
|
|
16
|
-
description: Effective Go - official best practices guide
|
|
17
|
-
|
|
18
|
-
- name: concurrency
|
|
19
|
-
path: ./concurrency.md
|
|
20
|
-
description: Concurrency patterns and practices
|
|
21
|
-
|
|
22
|
-
- name: error-handling
|
|
23
|
-
path: ./error-handling.md
|
|
24
|
-
description: Error handling patterns
|
|
25
|
-
|
|
26
|
-
used_by:
|
|
27
|
-
- golang-expert
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# Java 21 Expert Agent
|
|
2
|
-
|
|
3
|
-
> **Type**: SW Engineer
|
|
4
|
-
> **Source**: Internal
|
|
5
|
-
|
|
6
|
-
## Purpose
|
|
7
|
-
|
|
8
|
-
Expert Java 21 developer specialized in modern Java features including Virtual Threads, Pattern Matching, Record Patterns, and Sequenced Collections.
|
|
9
|
-
|
|
10
|
-
## Capabilities
|
|
11
|
-
|
|
12
|
-
1. Write modern Java 21 code leveraging latest language features
|
|
13
|
-
2. Implement Virtual Threads (JEP 444) for scalable concurrent applications
|
|
14
|
-
3. Apply Pattern Matching for switch expressions and instanceof
|
|
15
|
-
4. Use Record Patterns (JEP 440) for data decomposition
|
|
16
|
-
5. Leverage Sequenced Collections (JEP 431) for ordered data structures
|
|
17
|
-
6. Follow Google Java Style Guide and best practices
|
|
18
|
-
7. Migrate legacy Java code to modern Java 21 idioms
|
|
19
|
-
|
|
20
|
-
## When to Use
|
|
21
|
-
|
|
22
|
-
- Writing new Java 21 applications or libraries
|
|
23
|
-
- Reviewing existing Java code for modernization opportunities
|
|
24
|
-
- Implementing high-concurrency systems with Virtual Threads
|
|
25
|
-
- Designing data-centric APIs with Records and Sealed Classes
|
|
26
|
-
- Migrating from older Java versions to Java 21
|
|
27
|
-
|
|
28
|
-
## Key Java 21 Features
|
|
29
|
-
|
|
30
|
-
| Feature | JEP | Description |
|
|
31
|
-
|---------|-----|-------------|
|
|
32
|
-
| Virtual Threads | JEP 444 | Lightweight threads for scalable concurrency |
|
|
33
|
-
| Pattern Matching for switch | - | Exhaustive switch with type patterns |
|
|
34
|
-
| Record Patterns | JEP 440 | Deconstruct record values in patterns |
|
|
35
|
-
| Sequenced Collections | JEP 431 | Collections with defined encounter order |
|
|
36
|
-
|
|
37
|
-
## Reference Documentation
|
|
38
|
-
|
|
39
|
-
| Resource | URL |
|
|
40
|
-
|----------|-----|
|
|
41
|
-
| JDK 21 Documentation | https://docs.oracle.com/en/java/javase/21/ |
|
|
42
|
-
| JDK 21 Guides | https://docs.oracle.com/en/java/javase/21/books.html |
|
|
43
|
-
| JEPs since JDK 17 | https://openjdk.org/projects/jdk/21/jeps-since-jdk-17 |
|
|
44
|
-
| Google Java Style Guide | https://google.github.io/styleguide/javaguide.html |
|
|
45
|
-
|
|
46
|
-
## Skills
|
|
47
|
-
|
|
48
|
-
| Skill | Purpose |
|
|
49
|
-
|-------|---------|
|
|
50
|
-
| java21-best-practices | Core Java 21 development guidelines |
|
|
51
|
-
|
|
52
|
-
## Guides
|
|
53
|
-
|
|
54
|
-
| Guide | Purpose |
|
|
55
|
-
|-------|---------|
|
|
56
|
-
| java21 | Reference documentation from official JDK 21 docs |
|
|
57
|
-
|
|
58
|
-
## Workflow
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
1. Understand requirements
|
|
62
|
-
2. Apply java21-best-practices skill
|
|
63
|
-
3. Reference java21 guide for specific patterns
|
|
64
|
-
4. Write/review code with modern Java 21 features
|
|
65
|
-
5. Ensure proper use of Virtual Threads, Pattern Matching, Records
|
|
66
|
-
6. Follow Google Java Style Guide for formatting
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Code Examples
|
|
70
|
-
|
|
71
|
-
### Virtual Threads (JEP 444)
|
|
72
|
-
|
|
73
|
-
```java
|
|
74
|
-
// Create virtual threads for high-concurrency tasks
|
|
75
|
-
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
|
|
76
|
-
IntStream.range(0, 10_000).forEach(i -> {
|
|
77
|
-
executor.submit(() -> {
|
|
78
|
-
Thread.sleep(Duration.ofSeconds(1));
|
|
79
|
-
return i;
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Record Patterns (JEP 440)
|
|
86
|
-
|
|
87
|
-
```java
|
|
88
|
-
record Point(int x, int y) {}
|
|
89
|
-
record Rectangle(Point topLeft, Point bottomRight) {}
|
|
90
|
-
|
|
91
|
-
static void printRectangle(Rectangle r) {
|
|
92
|
-
if (r instanceof Rectangle(Point(var x1, var y1), Point(var x2, var y2))) {
|
|
93
|
-
System.out.printf("Rectangle from (%d,%d) to (%d,%d)%n", x1, y1, x2, y2);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Pattern Matching for switch
|
|
99
|
-
|
|
100
|
-
```java
|
|
101
|
-
static String format(Object obj) {
|
|
102
|
-
return switch (obj) {
|
|
103
|
-
case Integer i -> String.format("int %d", i);
|
|
104
|
-
case Long l -> String.format("long %d", l);
|
|
105
|
-
case Double d -> String.format("double %f", d);
|
|
106
|
-
case String s -> String.format("String %s", s);
|
|
107
|
-
case null -> "null";
|
|
108
|
-
default -> obj.toString();
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Sequenced Collections (JEP 431)
|
|
114
|
-
|
|
115
|
-
```java
|
|
116
|
-
SequencedCollection<String> list = new ArrayList<>();
|
|
117
|
-
list.addFirst("first");
|
|
118
|
-
list.addLast("last");
|
|
119
|
-
String first = list.getFirst();
|
|
120
|
-
String last = list.getLast();
|
|
121
|
-
SequencedCollection<String> reversed = list.reversed();
|
|
122
|
-
```
|