moai-adk 0.11.0__py3-none-any.whl → 0.11.1__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/core/issue_creator.py +2 -2
- moai_adk/core/project/detector.py +285 -12
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +1187 -0
- moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
- moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
- moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +208 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +744 -0
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +109 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +103 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +156 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
- moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +97 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
- moai_adk/templates/.claude/settings.json +144 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
- moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
- moai_adk/templates/.moai/config.json +113 -0
- moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
- moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
- moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
- moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
- moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
- moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
- moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
- moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
- moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
- moai_adk/templates/.moai/project/product.md +161 -0
- moai_adk/templates/.moai/project/structure.md +156 -0
- moai_adk/templates/.moai/project/tech.md +227 -0
- moai_adk/templates/CLAUDE.md +90 -10
- moai_adk/templates/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.11.1.dist-info}/METADATA +43 -1
- moai_adk-0.11.1.dist-info/RECORD +330 -0
- moai_adk-0.11.0.dist-info/RECORD +0 -77
- /moai_adk/templates/.github/workflows/{release.yml → moai-adk-release.yml} +0 -0
- /moai_adk/templates/.github/workflows/{spec-issue-sync.yml → moai-adk-spec-issue-sync.yml} +0 -0
- /moai_adk/templates/.github/workflows/{tag-validation.yml → moai-adk-tag-validation.yml} +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.11.1.dist-info}/WHEEL +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.11.1.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.11.0.dist-info → moai_adk-0.11.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Reference: [Skill Domain]
|
|
2
|
+
|
|
3
|
+
Complete reference documentation for [Skill Name].
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## API Reference
|
|
8
|
+
|
|
9
|
+
### Function/Command 1: `function_name(param1, param2)`
|
|
10
|
+
|
|
11
|
+
[Description of what this function does]
|
|
12
|
+
|
|
13
|
+
**Parameters**:
|
|
14
|
+
- `param1` (type): Description of parameter 1
|
|
15
|
+
- `param2` (type): Description of parameter 2
|
|
16
|
+
|
|
17
|
+
**Returns**:
|
|
18
|
+
- Type: [Return type]
|
|
19
|
+
- Description: [What is returned]
|
|
20
|
+
|
|
21
|
+
**Example**:
|
|
22
|
+
```python
|
|
23
|
+
result = function_name("value1", "value2")
|
|
24
|
+
print(result)
|
|
25
|
+
# Output: [example output]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Raises**:
|
|
29
|
+
- `ErrorType`: When this error occurs
|
|
30
|
+
- `AnotherError`: When that error occurs
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### Function/Command 2: `another_function(arg1)`
|
|
35
|
+
|
|
36
|
+
[Description]
|
|
37
|
+
|
|
38
|
+
**Parameters**:
|
|
39
|
+
- `arg1`: Description
|
|
40
|
+
|
|
41
|
+
**Returns**: Description
|
|
42
|
+
|
|
43
|
+
**Example**:
|
|
44
|
+
```
|
|
45
|
+
code example
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Configuration
|
|
51
|
+
|
|
52
|
+
### Configuration File Format
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
# Example configuration
|
|
56
|
+
key1: value1
|
|
57
|
+
section:
|
|
58
|
+
nested_key: nested_value
|
|
59
|
+
list:
|
|
60
|
+
- item1
|
|
61
|
+
- item2
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Available Options
|
|
65
|
+
|
|
66
|
+
| Option | Type | Default | Description |
|
|
67
|
+
|--------|------|---------|-------------|
|
|
68
|
+
| `option1` | string | "default" | Description of option 1 |
|
|
69
|
+
| `option2` | number | 10 | Description of option 2 |
|
|
70
|
+
| `option3` | boolean | true | Description of option 3 |
|
|
71
|
+
|
|
72
|
+
### Configuration Examples
|
|
73
|
+
|
|
74
|
+
**Minimal Configuration**:
|
|
75
|
+
```yaml
|
|
76
|
+
required_option: value
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Production Configuration**:
|
|
80
|
+
```yaml
|
|
81
|
+
option1: production_value
|
|
82
|
+
option2: 100
|
|
83
|
+
option3: false
|
|
84
|
+
section:
|
|
85
|
+
nested_value: production_specific
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Data Models
|
|
91
|
+
|
|
92
|
+
### Model 1: [Model Name]
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Class/Type definition here
|
|
96
|
+
Field 1: type - description
|
|
97
|
+
Field 2: type - description
|
|
98
|
+
Field 3: type - description
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Example**:
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"field1": "value",
|
|
105
|
+
"field2": 123,
|
|
106
|
+
"field3": true
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Model 2: [Model Name]
|
|
111
|
+
|
|
112
|
+
[Similar structure]
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Edge Cases & Limitations
|
|
117
|
+
|
|
118
|
+
### Known Limitations
|
|
119
|
+
|
|
120
|
+
1. **Limitation 1**
|
|
121
|
+
- Description
|
|
122
|
+
- Impact
|
|
123
|
+
- Workaround (if available)
|
|
124
|
+
|
|
125
|
+
2. **Limitation 2**
|
|
126
|
+
- Description
|
|
127
|
+
- Impact
|
|
128
|
+
- Workaround
|
|
129
|
+
|
|
130
|
+
### Boundary Conditions
|
|
131
|
+
|
|
132
|
+
| Condition | Behavior | Handling |
|
|
133
|
+
|-----------|----------|----------|
|
|
134
|
+
| Empty input | Returns default | Validate before calling |
|
|
135
|
+
| Maximum size exceeded | Throws error | Check size limits first |
|
|
136
|
+
| Timeout | Operation fails | Set timeout threshold |
|
|
137
|
+
|
|
138
|
+
### Workarounds
|
|
139
|
+
|
|
140
|
+
**Workaround 1**: [For limitation 1]
|
|
141
|
+
```
|
|
142
|
+
Implementation workaround code
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Workaround 2**: [For limitation 2]
|
|
146
|
+
```
|
|
147
|
+
Implementation workaround code
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Performance Considerations
|
|
153
|
+
|
|
154
|
+
### Time Complexity
|
|
155
|
+
|
|
156
|
+
- Operation 1: O(n) — Description
|
|
157
|
+
- Operation 2: O(n log n) — Description
|
|
158
|
+
- Operation 3: O(1) — Description
|
|
159
|
+
|
|
160
|
+
### Space Complexity
|
|
161
|
+
|
|
162
|
+
- Operation 1: O(n) — Description
|
|
163
|
+
- Operation 2: O(1) — Description
|
|
164
|
+
|
|
165
|
+
### Optimization Tips
|
|
166
|
+
|
|
167
|
+
1. **Tip 1**: How to optimize performance in scenario 1
|
|
168
|
+
2. **Tip 2**: How to optimize performance in scenario 2
|
|
169
|
+
3. **Tip 3**: Caching strategy or batching approach
|
|
170
|
+
|
|
171
|
+
### Benchmarks (if applicable)
|
|
172
|
+
|
|
173
|
+
| Operation | Small (1K) | Medium (1M) | Large (1G) |
|
|
174
|
+
|-----------|-----------|-----------|-----------|
|
|
175
|
+
| Read | 10ms | 100ms | 1s |
|
|
176
|
+
| Write | 20ms | 200ms | 2s |
|
|
177
|
+
| Process | 50ms | 500ms | 5s |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Error Handling
|
|
182
|
+
|
|
183
|
+
### Common Errors
|
|
184
|
+
|
|
185
|
+
**Error 1: [Error Name]**
|
|
186
|
+
- Cause: [What causes this error]
|
|
187
|
+
- Solution: [How to fix it]
|
|
188
|
+
- Example:
|
|
189
|
+
```
|
|
190
|
+
Error message example
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Error 2: [Error Name]**
|
|
194
|
+
- Cause: [What causes this error]
|
|
195
|
+
- Solution: [How to fix it]
|
|
196
|
+
|
|
197
|
+
### Error Codes
|
|
198
|
+
|
|
199
|
+
| Code | Meaning | Recovery |
|
|
200
|
+
|------|---------|----------|
|
|
201
|
+
| 0 | Success | Continue |
|
|
202
|
+
| 1 | General error | Check logs |
|
|
203
|
+
| 2 | Invalid input | Validate input |
|
|
204
|
+
| 3 | Resource not found | Check resource exists |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Compatibility
|
|
209
|
+
|
|
210
|
+
### Supported Versions
|
|
211
|
+
|
|
212
|
+
- Framework/Language version X.Y+
|
|
213
|
+
- Dependency 1 version A.B+
|
|
214
|
+
- Dependency 2 version C.D+
|
|
215
|
+
|
|
216
|
+
### Known Incompatibilities
|
|
217
|
+
|
|
218
|
+
- Version X.Y is not supported due to [reason]
|
|
219
|
+
- Older frameworks may have [limitation]
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Security Considerations
|
|
224
|
+
|
|
225
|
+
### Input Validation
|
|
226
|
+
|
|
227
|
+
- All user input must be [validated/sanitized]
|
|
228
|
+
- Maximum length limits: [specify limits]
|
|
229
|
+
- Allowed characters: [specify]
|
|
230
|
+
|
|
231
|
+
### Secrets Management
|
|
232
|
+
|
|
233
|
+
- Never hardcode secrets
|
|
234
|
+
- Use environment variables
|
|
235
|
+
- Validate API keys before use
|
|
236
|
+
|
|
237
|
+
### Common Vulnerabilities to Avoid
|
|
238
|
+
|
|
239
|
+
1. [Vulnerability 1] — How to prevent it
|
|
240
|
+
2. [Vulnerability 2] — How to prevent it
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Glossary
|
|
245
|
+
|
|
246
|
+
- **Term 1**: Definition with context
|
|
247
|
+
- **Term 2**: Definition with context
|
|
248
|
+
- **Term 3**: Definition with context
|
|
249
|
+
- **Acronym 1**: What it stands for and means
|
|
250
|
+
- **Acronym 2**: What it stands for and means
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Related Resources
|
|
255
|
+
|
|
256
|
+
- [SKILL.md](SKILL.md) — Main framework and concepts
|
|
257
|
+
- [examples.md](examples.md) — Real-world usage examples
|
|
258
|
+
- [External resource](https://example.com) — External documentation
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Version & History
|
|
263
|
+
|
|
264
|
+
**Current Version**: 0.1.0
|
|
265
|
+
**Last Updated**: 2025-10-22
|
|
266
|
+
|
|
267
|
+
### Changelog
|
|
268
|
+
|
|
269
|
+
#### v0.1.0 (2025-10-22)
|
|
270
|
+
- Initial reference documentation
|
|
271
|
+
- API documentation added
|
|
272
|
+
- Configuration options documented
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
**Status**: Active
|
|
277
|
+
**Maintainer**: [Your Name]
|
|
278
|
+
**Framework**: MoAI-ADK + Claude Code Skills
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Script Template: [Script Purpose]
|
|
4
|
+
# Description: [What this script does in one sentence]
|
|
5
|
+
# Usage: ./script-name.sh [ARGS]
|
|
6
|
+
#
|
|
7
|
+
# This is a template for creating production-ready Bash scripts
|
|
8
|
+
# with proper error handling, validation, and logging.
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
# ============================================================================
|
|
14
|
+
# CONFIGURATION
|
|
15
|
+
# ============================================================================
|
|
16
|
+
|
|
17
|
+
# Script metadata
|
|
18
|
+
SCRIPT_NAME="$(basename "$0")"
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
21
|
+
|
|
22
|
+
# Color codes for output
|
|
23
|
+
readonly RED='\033[0;31m'
|
|
24
|
+
readonly GREEN='\033[0;32m'
|
|
25
|
+
readonly YELLOW='\033[1;33m'
|
|
26
|
+
readonly BLUE='\033[0;34m'
|
|
27
|
+
readonly NC='\033[0m' # No Color
|
|
28
|
+
|
|
29
|
+
# Configuration variables
|
|
30
|
+
readonly LOG_LEVEL="${LOG_LEVEL:-INFO}" # DEBUG, INFO, WARN, ERROR
|
|
31
|
+
readonly MAX_RETRIES="${MAX_RETRIES:-3}"
|
|
32
|
+
readonly RETRY_DELAY="${RETRY_DELAY:-2}"
|
|
33
|
+
|
|
34
|
+
# ============================================================================
|
|
35
|
+
# LOGGING FUNCTIONS
|
|
36
|
+
# ============================================================================
|
|
37
|
+
|
|
38
|
+
log_debug() {
|
|
39
|
+
[[ "$LOG_LEVEL" == "DEBUG" ]] && echo -e "${BLUE}[DEBUG]${NC} $*" >&2
|
|
40
|
+
return 0
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
log_info() {
|
|
44
|
+
echo -e "${GREEN}[INFO]${NC} $*"
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
log_warn() {
|
|
48
|
+
echo -e "${YELLOW}[WARN]${NC} $*" >&2
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
log_error() {
|
|
52
|
+
echo -e "${RED}[ERROR]${NC} $*" >&2
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
log_success() {
|
|
56
|
+
echo -e "${GREEN}✓${NC} $*"
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# ============================================================================
|
|
60
|
+
# ERROR HANDLING
|
|
61
|
+
# ============================================================================
|
|
62
|
+
|
|
63
|
+
# Trap errors and clean up
|
|
64
|
+
trap 'on_error $? $LINENO' ERR
|
|
65
|
+
|
|
66
|
+
on_error() {
|
|
67
|
+
local exit_code=$1
|
|
68
|
+
local line_number=$2
|
|
69
|
+
log_error "Script failed with exit code $exit_code on line $line_number"
|
|
70
|
+
cleanup
|
|
71
|
+
exit "$exit_code"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# Trap signals for graceful shutdown
|
|
75
|
+
trap 'on_interrupt' INT TERM
|
|
76
|
+
|
|
77
|
+
on_interrupt() {
|
|
78
|
+
log_warn "Script interrupted"
|
|
79
|
+
cleanup
|
|
80
|
+
exit 130
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
cleanup() {
|
|
84
|
+
log_debug "Running cleanup..."
|
|
85
|
+
# Add cleanup operations here (e.g., remove temp files, close connections)
|
|
86
|
+
# Example:
|
|
87
|
+
# [[ -n "${TEMP_FILE:-}" ]] && rm -f "$TEMP_FILE"
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# ============================================================================
|
|
91
|
+
# VALIDATION FUNCTIONS
|
|
92
|
+
# ============================================================================
|
|
93
|
+
|
|
94
|
+
validate_arg() {
|
|
95
|
+
local arg_name=$1
|
|
96
|
+
local arg_value=$2
|
|
97
|
+
|
|
98
|
+
if [[ -z "$arg_value" ]]; then
|
|
99
|
+
log_error "Argument '$arg_name' is required but was not provided"
|
|
100
|
+
print_usage
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
validate_file() {
|
|
106
|
+
local file_path=$1
|
|
107
|
+
|
|
108
|
+
if [[ ! -f "$file_path" ]]; then
|
|
109
|
+
log_error "File not found: $file_path"
|
|
110
|
+
return 1
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
if [[ ! -r "$file_path" ]]; then
|
|
114
|
+
log_error "File is not readable: $file_path"
|
|
115
|
+
return 1
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
return 0
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
validate_directory() {
|
|
122
|
+
local dir_path=$1
|
|
123
|
+
|
|
124
|
+
if [[ ! -d "$dir_path" ]]; then
|
|
125
|
+
log_error "Directory not found: $dir_path"
|
|
126
|
+
return 1
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
if [[ ! -w "$dir_path" ]]; then
|
|
130
|
+
log_error "Directory is not writable: $dir_path"
|
|
131
|
+
return 1
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
return 0
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
validate_command() {
|
|
138
|
+
local cmd=$1
|
|
139
|
+
|
|
140
|
+
if ! command -v "$cmd" &> /dev/null; then
|
|
141
|
+
log_error "Required command not found: $cmd"
|
|
142
|
+
return 1
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
return 0
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
# ============================================================================
|
|
149
|
+
# RETRY LOGIC
|
|
150
|
+
# ============================================================================
|
|
151
|
+
|
|
152
|
+
retry() {
|
|
153
|
+
local max_attempts=$1
|
|
154
|
+
shift
|
|
155
|
+
local cmd=("$@")
|
|
156
|
+
local attempt=1
|
|
157
|
+
|
|
158
|
+
while [[ $attempt -le $max_attempts ]]; do
|
|
159
|
+
log_debug "Attempt $attempt of $max_attempts: ${cmd[*]}"
|
|
160
|
+
|
|
161
|
+
if "${cmd[@]}"; then
|
|
162
|
+
return 0
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
if [[ $attempt -lt $max_attempts ]]; then
|
|
166
|
+
log_warn "Command failed, retrying in ${RETRY_DELAY}s..."
|
|
167
|
+
sleep "$RETRY_DELAY"
|
|
168
|
+
fi
|
|
169
|
+
|
|
170
|
+
((attempt++))
|
|
171
|
+
done
|
|
172
|
+
|
|
173
|
+
log_error "Command failed after $max_attempts attempts: ${cmd[*]}"
|
|
174
|
+
return 1
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
# ============================================================================
|
|
178
|
+
# MAIN FUNCTIONS
|
|
179
|
+
# ============================================================================
|
|
180
|
+
|
|
181
|
+
print_usage() {
|
|
182
|
+
cat << EOF
|
|
183
|
+
Usage: $SCRIPT_NAME [OPTIONS] [ARGUMENTS]
|
|
184
|
+
|
|
185
|
+
Description:
|
|
186
|
+
[Describe what this script does]
|
|
187
|
+
|
|
188
|
+
Options:
|
|
189
|
+
-h, --help Show this help message
|
|
190
|
+
-v, --verbose Enable verbose (debug) output
|
|
191
|
+
-d, --dry-run Show what would be done without doing it
|
|
192
|
+
|
|
193
|
+
Arguments:
|
|
194
|
+
ARG1 [Description of argument 1]
|
|
195
|
+
ARG2 [Description of argument 2]
|
|
196
|
+
|
|
197
|
+
Examples:
|
|
198
|
+
# Basic usage
|
|
199
|
+
$SCRIPT_NAME arg1 arg2
|
|
200
|
+
|
|
201
|
+
# With verbose output
|
|
202
|
+
$SCRIPT_NAME -v arg1 arg2
|
|
203
|
+
|
|
204
|
+
# Dry run to preview changes
|
|
205
|
+
$SCRIPT_NAME --dry-run arg1 arg2
|
|
206
|
+
|
|
207
|
+
Exit Codes:
|
|
208
|
+
0 Success
|
|
209
|
+
1 General error
|
|
210
|
+
2 Invalid arguments
|
|
211
|
+
130 Interrupted by user
|
|
212
|
+
|
|
213
|
+
Notes:
|
|
214
|
+
[Any additional notes about the script]
|
|
215
|
+
|
|
216
|
+
See Also:
|
|
217
|
+
[Reference to related documentation or scripts]
|
|
218
|
+
EOF
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
parse_args() {
|
|
222
|
+
local dry_run=false
|
|
223
|
+
|
|
224
|
+
while [[ $# -gt 0 ]]; do
|
|
225
|
+
case $1 in
|
|
226
|
+
-h | --help)
|
|
227
|
+
print_usage
|
|
228
|
+
exit 0
|
|
229
|
+
;;
|
|
230
|
+
-v | --verbose)
|
|
231
|
+
export LOG_LEVEL="DEBUG"
|
|
232
|
+
log_debug "Debug mode enabled"
|
|
233
|
+
shift
|
|
234
|
+
;;
|
|
235
|
+
-d | --dry-run)
|
|
236
|
+
dry_run=true
|
|
237
|
+
log_info "Dry run mode enabled"
|
|
238
|
+
shift
|
|
239
|
+
;;
|
|
240
|
+
-*)
|
|
241
|
+
log_error "Unknown option: $1"
|
|
242
|
+
print_usage
|
|
243
|
+
exit 2
|
|
244
|
+
;;
|
|
245
|
+
*)
|
|
246
|
+
# Positional arguments
|
|
247
|
+
break
|
|
248
|
+
;;
|
|
249
|
+
esac
|
|
250
|
+
done
|
|
251
|
+
|
|
252
|
+
# Store remaining arguments
|
|
253
|
+
readonly ARGS=("$@")
|
|
254
|
+
readonly DRY_RUN=$dry_run
|
|
255
|
+
|
|
256
|
+
# Validate required arguments
|
|
257
|
+
if [[ ${#ARGS[@]} -lt 1 ]]; then
|
|
258
|
+
log_error "Missing required argument"
|
|
259
|
+
print_usage
|
|
260
|
+
exit 2
|
|
261
|
+
fi
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
main() {
|
|
265
|
+
log_info "Starting $SCRIPT_NAME"
|
|
266
|
+
|
|
267
|
+
# Validate prerequisites
|
|
268
|
+
validate_command "grep" || exit 1
|
|
269
|
+
validate_command "sed" || exit 1
|
|
270
|
+
|
|
271
|
+
# Extract arguments
|
|
272
|
+
local arg1="${ARGS[0]}"
|
|
273
|
+
local arg2="${ARGS[1]:-}"
|
|
274
|
+
|
|
275
|
+
log_debug "arg1: $arg1"
|
|
276
|
+
log_debug "arg2: $arg2"
|
|
277
|
+
|
|
278
|
+
# Validate arguments
|
|
279
|
+
validate_arg "arg1" "$arg1"
|
|
280
|
+
|
|
281
|
+
# Main logic here
|
|
282
|
+
if [[ "$DRY_RUN" == "true" ]]; then
|
|
283
|
+
log_info "[DRY RUN] Would process: $arg1"
|
|
284
|
+
return 0
|
|
285
|
+
fi
|
|
286
|
+
|
|
287
|
+
# Example: Do something with retries
|
|
288
|
+
retry "$MAX_RETRIES" \
|
|
289
|
+
grep -r "pattern" "$arg1"
|
|
290
|
+
|
|
291
|
+
# Success
|
|
292
|
+
log_success "Operation completed successfully"
|
|
293
|
+
return 0
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
# ============================================================================
|
|
297
|
+
# ENTRY POINT
|
|
298
|
+
# ============================================================================
|
|
299
|
+
|
|
300
|
+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
301
|
+
parse_args "$@"
|
|
302
|
+
main
|
|
303
|
+
fi
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# moai-spec-authoring Skill
|
|
2
|
+
|
|
3
|
+
**Version**: 1.2.0
|
|
4
|
+
**Created**: 2025-10-23
|
|
5
|
+
**Updated**: 2025-10-29
|
|
6
|
+
**Status**: Active
|
|
7
|
+
**Tier**: Foundation
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Comprehensive guide for authoring SPEC documents in MoAI-ADK projects. Provides complete YAML metadata structure, EARS syntax patterns, version management strategies, and validation tools.
|
|
12
|
+
|
|
13
|
+
## Key Features
|
|
14
|
+
|
|
15
|
+
- **7 Required + 9 Optional Metadata Fields**: Complete reference with lifecycle examples
|
|
16
|
+
- **5 Official EARS Patterns**: Ubiquitous, Event-driven, State-driven, Optional, Unwanted Behaviors
|
|
17
|
+
- **Version Lifecycle**: Semantic versioning from draft to production
|
|
18
|
+
- **TAG Integration**: @SPEC, @TEST, @CODE, @DOC chain management
|
|
19
|
+
- **Validation Tools**: Pre-submission checklist and automation scripts
|
|
20
|
+
- **Common Pitfalls**: Prevention strategies for 7 major issues
|
|
21
|
+
|
|
22
|
+
## File Structure (Progressive Disclosure)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
.claude/skills/moai-spec-authoring/
|
|
26
|
+
├── SKILL.md # Core overview + Quick Start (~500 words)
|
|
27
|
+
├── reference.md # Complete metadata reference + EARS syntax
|
|
28
|
+
├── examples.md # Real-world examples + patterns + troubleshooting
|
|
29
|
+
├── examples/
|
|
30
|
+
│ └── validate-spec.sh # Automated SPEC validation script
|
|
31
|
+
└── README.md # This file
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Quick Links
|
|
35
|
+
|
|
36
|
+
- **Quick Start**: [SKILL.md](./SKILL.md#quick-start-5-step-spec-creation)
|
|
37
|
+
- **Metadata Reference**: [reference.md](./reference.md#complete-metadata-field-reference)
|
|
38
|
+
- **EARS Syntax**: [reference.md](./reference.md#ears-requirement-syntax)
|
|
39
|
+
- **Examples**: [examples.md](./examples.md#real-world-ears-examples)
|
|
40
|
+
- **Troubleshooting**: [examples.md](./examples.md#troubleshooting)
|
|
41
|
+
|
|
42
|
+
## Usage
|
|
43
|
+
|
|
44
|
+
### Automatic Activation
|
|
45
|
+
|
|
46
|
+
This Skill automatically loads when:
|
|
47
|
+
- `/alfred:1-plan` command is executed
|
|
48
|
+
- SPEC document creation is requested
|
|
49
|
+
- Requirements clarification is discussed
|
|
50
|
+
|
|
51
|
+
### Manual Reference
|
|
52
|
+
|
|
53
|
+
Consult detailed sections for:
|
|
54
|
+
- SPEC authoring best practices
|
|
55
|
+
- Existing SPEC document validation
|
|
56
|
+
- Metadata issue troubleshooting
|
|
57
|
+
- EARS syntax pattern reference
|
|
58
|
+
|
|
59
|
+
## Validation Command
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Validate SPEC metadata
|
|
63
|
+
rg "^(id|version|status|created|updated|author|priority):" .moai/specs/SPEC-AUTH-001/spec.md
|
|
64
|
+
|
|
65
|
+
# Check for duplicate IDs
|
|
66
|
+
rg "@SPEC:AUTH-001" -n .moai/specs/
|
|
67
|
+
|
|
68
|
+
# Scan entire TAG chain
|
|
69
|
+
rg '@(SPEC|TEST|CODE|DOC):AUTH-001' -n
|
|
70
|
+
|
|
71
|
+
# Use automated script
|
|
72
|
+
./examples/validate-spec.sh .moai/specs/SPEC-AUTH-001
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Example SPEC Structure
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
---
|
|
79
|
+
id: AUTH-001
|
|
80
|
+
version: 0.0.1
|
|
81
|
+
status: draft
|
|
82
|
+
created: 2025-10-29
|
|
83
|
+
updated: 2025-10-29
|
|
84
|
+
author: @YourHandle
|
|
85
|
+
priority: high
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
# @SPEC:AUTH-001: JWT Authentication System
|
|
89
|
+
|
|
90
|
+
## HISTORY
|
|
91
|
+
### v0.0.1 (2025-10-29)
|
|
92
|
+
- **INITIAL**: JWT authentication SPEC draft
|
|
93
|
+
|
|
94
|
+
## Environment
|
|
95
|
+
**Runtime**: Node.js 20.x
|
|
96
|
+
|
|
97
|
+
## Assumptions
|
|
98
|
+
1. User storage: PostgreSQL
|
|
99
|
+
2. Secret management: Environment variables
|
|
100
|
+
|
|
101
|
+
## Requirements
|
|
102
|
+
|
|
103
|
+
### Ubiquitous Requirements
|
|
104
|
+
**UR-001**: The system shall provide JWT-based authentication.
|
|
105
|
+
|
|
106
|
+
### Event-driven Requirements
|
|
107
|
+
**ER-001**: WHEN the user submits valid credentials, the system shall issue a JWT token.
|
|
108
|
+
|
|
109
|
+
### State-driven Requirements
|
|
110
|
+
**SR-001**: WHILE the user is in an authenticated state, the system shall permit access to protected resources.
|
|
111
|
+
|
|
112
|
+
### Optional Features
|
|
113
|
+
**OF-001**: WHERE multi-factor authentication is enabled, the system can require OTP verification.
|
|
114
|
+
|
|
115
|
+
### Unwanted Behaviors
|
|
116
|
+
**UB-001**: IF a token has expired, THEN the system shall deny access and return HTTP 401.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Integration
|
|
120
|
+
|
|
121
|
+
Works seamlessly with:
|
|
122
|
+
- `spec-builder` agent - SPEC creation
|
|
123
|
+
- `moai-foundation-ears` - EARS syntax patterns
|
|
124
|
+
- `moai-foundation-specs` - Metadata validation
|
|
125
|
+
- `moai-foundation-tags` - TAG system integration
|
|
126
|
+
|
|
127
|
+
## Support
|
|
128
|
+
|
|
129
|
+
For questions or issues:
|
|
130
|
+
1. Refer to comprehensive documentation: `SKILL.md`, `reference.md`, `examples.md`
|
|
131
|
+
2. Use `/alfred:1-plan` for guided SPEC creation
|
|
132
|
+
3. Review existing SPECs in `.moai/specs/` for examples
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
**Maintained By**: MoAI-ADK Team
|
|
137
|
+
**Last Updated**: 2025-10-29
|