moai-adk 0.8.0__py3-none-any.whl → 0.15.0__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/cli/commands/init.py +14 -2
- moai_adk/cli/commands/update.py +229 -60
- moai_adk/core/config/migration.py +1 -1
- moai_adk/core/issue_creator.py +313 -0
- moai_adk/core/project/detector.py +201 -12
- moai_adk/core/project/initializer.py +62 -1
- moai_adk/core/project/phase_executor.py +48 -6
- moai_adk/core/tags/__init__.py +86 -0
- moai_adk/core/tags/ci_validator.py +463 -0
- moai_adk/core/tags/cli.py +283 -0
- moai_adk/core/tags/generator.py +109 -0
- moai_adk/core/tags/inserter.py +99 -0
- moai_adk/core/tags/mapper.py +126 -0
- moai_adk/core/tags/parser.py +76 -0
- moai_adk/core/tags/pre_commit_validator.py +393 -0
- moai_adk/core/tags/reporter.py +956 -0
- moai_adk/core/tags/tags.py +149 -0
- moai_adk/core/tags/validator.py +897 -0
- moai_adk/core/template_engine.py +268 -0
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +319 -0
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +25 -2
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +24 -12
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +20 -13
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +47 -16
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +95 -15
- moai_adk/templates/.claude/agents/alfred/project-manager.md +78 -12
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +28 -5
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +30 -2
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +133 -13
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +104 -8
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +133 -16
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +27 -4
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +571 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +466 -125
- moai_adk/templates/.claude/commands/alfred/1-plan.md +208 -71
- moai_adk/templates/.claude/commands/alfred/2-run.md +276 -55
- moai_adk/templates/.claude/commands/alfred/3-sync.md +439 -53
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +361 -29
- moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +100 -0
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +94 -0
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/__init__.py +2 -2
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
- moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
- moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/tags.py +55 -23
- 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 +154 -0
- moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/session.py +28 -15
- moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/tool.py +3 -6
- moai_adk/templates/.claude/hooks/alfred/{handlers → shared/handlers}/user.py +19 -0
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +112 -0
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
- moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
- moai_adk/templates/.claude/settings.json +5 -5
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
- moai_adk/templates/{.moai/memory/CLAUDE-AGENTS-GUIDE.md → .claude/skills/moai-alfred-agent-guide/reference.md} +34 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +56 -0
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +74 -0
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +269 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +198 -0
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +141 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
- moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +273 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
- moai_adk/templates/.claude/skills/{moai-spec-authoring → moai-alfred-spec-authoring}/examples/validate-spec.sh +3 -3
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +115 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +348 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +19 -0
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +4 -0
- moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL.md +3 -3
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +17 -13
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +9 -6
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +15 -12
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +14 -12
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +14 -11
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +10 -8
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +15 -12
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +13 -11
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +16 -10
- moai_adk/templates/.claude/skills/moai-project-documentation.md +622 -0
- moai_adk/templates/.git-hooks/pre-push +143 -0
- moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
- moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
- moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
- moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
- moai_adk/templates/.github/workflows/release.yml +118 -0
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -35
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
- moai_adk/templates/.github/workflows/tag-report.yml +269 -0
- moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
- moai_adk/templates/.moai/config.json +21 -2
- moai_adk/templates/CLAUDE.md +972 -78
- moai_adk/templates/workflows/go-tag-validation.yml +30 -0
- moai_adk/templates/workflows/javascript-tag-validation.yml +41 -0
- moai_adk/templates/workflows/python-tag-validation.yml +42 -0
- moai_adk/templates/workflows/typescript-tag-validation.yml +31 -0
- moai_adk/utils/banner.py +5 -5
- {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/METADATA +1518 -161
- {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/RECORD +183 -100
- moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
- moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
- moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
- moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
- moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
- moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
- moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
- moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
- moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
- moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
- moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
- moai_adk/templates/.moai/memory/config-schema.md +0 -444
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
- moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
- moai_adk/templates/.moai/project/product.md +0 -161
- moai_adk/templates/.moai/project/structure.md +0 -156
- moai_adk/templates/.moai/project/tech.md +0 -227
- moai_adk/templates/__init__.py +0 -2
- /moai_adk/templates/{.moai/memory/CONFIG-SCHEMA.md → .claude/skills/moai-alfred-config-schema/reference.md} +0 -0
- /moai_adk/templates/{.moai/memory/CLAUDE-PRACTICES.md → .claude/skills/moai-alfred-practices/reference.md} +0 -0
- /moai_adk/templates/{.moai/memory/CLAUDE-RULES.md → .claude/skills/moai-alfred-rules/reference.md} +0 -0
- /moai_adk/templates/{.moai/memory/SKILLS-DESCRIPTION-POLICY.md → .claude/skills/moai-cc-skill-descriptions/reference.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/CHECKLIST.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/EXAMPLES.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/INTERACTIVE-DISCOVERY.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/METADATA.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/PARALLEL-ANALYSIS-REPORT.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/PYTHON-VERSION-MATRIX.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL-FACTORY-WORKFLOW.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/SKILL-UPDATE-ADVISOR.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/STEP-BY-STEP-GUIDE.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/STRUCTURE.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/WEB-RESEARCH.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/reference.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/scripts/generate-structure.sh +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/scripts/validate-skill.sh +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/SKILL_TEMPLATE.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/examples-template.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/reference-template.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-skill-factory → moai-cc-skill-factory}/templates/scripts-template.sh +0 -0
- {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/WHEEL +0 -0
- {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.8.0.dist-info → moai_adk-0.15.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @CODE:HOOKS-CLARITY-DOCS | SPEC: Individual hook files for better UX
|
|
3
|
+
"""UserPromptSubmit Hook: Just-In-Time Document Loading
|
|
4
|
+
|
|
5
|
+
Claude Code Event: UserPromptSubmit
|
|
6
|
+
Purpose: Analyze user prompt and recommend relevant documents to load into context
|
|
7
|
+
Execution: Triggered when user submits a prompt
|
|
8
|
+
|
|
9
|
+
Output: additionalContext with document path suggestions
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import json
|
|
13
|
+
import sys
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from utils.timeout import CrossPlatformTimeout
|
|
18
|
+
from utils.timeout import TimeoutError as PlatformTimeoutError
|
|
19
|
+
|
|
20
|
+
# Setup import path for shared modules
|
|
21
|
+
HOOKS_DIR = Path(__file__).parent
|
|
22
|
+
SHARED_DIR = HOOKS_DIR / "shared"
|
|
23
|
+
if str(SHARED_DIR) not in sys.path:
|
|
24
|
+
sys.path.insert(0, str(SHARED_DIR))
|
|
25
|
+
|
|
26
|
+
from handlers import handle_user_prompt_submit
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def main() -> None:
|
|
30
|
+
"""Main entry point for UserPromptSubmit hook
|
|
31
|
+
|
|
32
|
+
Analyzes user prompt patterns and recommends relevant documents:
|
|
33
|
+
- /alfred:1-plan → spec-metadata.md
|
|
34
|
+
- /alfred:2-run → development-guide.md
|
|
35
|
+
- @TAG mentions → TAG documentation
|
|
36
|
+
- SPEC references → related SPEC files
|
|
37
|
+
|
|
38
|
+
Exit Codes:
|
|
39
|
+
0: Success
|
|
40
|
+
1: Error (timeout, JSON parse failure, handler exception)
|
|
41
|
+
|
|
42
|
+
Note: Uses special output schema for UserPromptSubmit:
|
|
43
|
+
{
|
|
44
|
+
"continue": true,
|
|
45
|
+
"hookSpecificOutput": {
|
|
46
|
+
"hookEventName": "UserPromptSubmit",
|
|
47
|
+
"additionalContext": "Document path suggestions..."
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
"""
|
|
51
|
+
# Set 5-second timeout
|
|
52
|
+
timeout = CrossPlatformTimeout(5)
|
|
53
|
+
timeout.start()
|
|
54
|
+
|
|
55
|
+
try:
|
|
56
|
+
# Read JSON payload from stdin
|
|
57
|
+
input_data = sys.stdin.read()
|
|
58
|
+
data = json.loads(input_data) if input_data.strip() else {}
|
|
59
|
+
|
|
60
|
+
# Call handler
|
|
61
|
+
result = handle_user_prompt_submit(data)
|
|
62
|
+
|
|
63
|
+
# Output result using UserPromptSubmit-specific schema
|
|
64
|
+
print(json.dumps(result.to_user_prompt_submit_dict()))
|
|
65
|
+
sys.exit(0)
|
|
66
|
+
|
|
67
|
+
except PlatformTimeoutError:
|
|
68
|
+
# Timeout - return minimal valid response
|
|
69
|
+
timeout_response: dict[str, Any] = {
|
|
70
|
+
"continue": True,
|
|
71
|
+
"hookSpecificOutput": {
|
|
72
|
+
"hookEventName": "UserPromptSubmit",
|
|
73
|
+
"additionalContext": "⚠️ JIT context timeout - continuing without suggestions",
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
print(json.dumps(timeout_response))
|
|
77
|
+
print("UserPromptSubmit hook timeout after 5 seconds", file=sys.stderr)
|
|
78
|
+
sys.exit(1)
|
|
79
|
+
|
|
80
|
+
except json.JSONDecodeError as e:
|
|
81
|
+
# JSON parse error
|
|
82
|
+
error_response: dict[str, Any] = {
|
|
83
|
+
"continue": True,
|
|
84
|
+
"hookSpecificOutput": {
|
|
85
|
+
"hookEventName": "UserPromptSubmit",
|
|
86
|
+
"error": f"JSON parse error: {e}",
|
|
87
|
+
},
|
|
88
|
+
}
|
|
89
|
+
print(json.dumps(error_response))
|
|
90
|
+
print(f"UserPromptSubmit JSON parse error: {e}", file=sys.stderr)
|
|
91
|
+
sys.exit(1)
|
|
92
|
+
|
|
93
|
+
except Exception as e:
|
|
94
|
+
# Unexpected error
|
|
95
|
+
error_response: dict[str, Any] = {
|
|
96
|
+
"continue": True,
|
|
97
|
+
"hookSpecificOutput": {
|
|
98
|
+
"hookEventName": "UserPromptSubmit",
|
|
99
|
+
"error": f"UserPromptSubmit error: {e}",
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
print(json.dumps(error_response))
|
|
103
|
+
print(f"UserPromptSubmit unexpected error: {e}", file=sys.stderr)
|
|
104
|
+
sys.exit(1)
|
|
105
|
+
|
|
106
|
+
finally:
|
|
107
|
+
# Always cancel alarm
|
|
108
|
+
timeout.cancel()
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
if __name__ == "__main__":
|
|
112
|
+
main()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Utility modules for Alfred hooks."""
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @CODE:TIMEOUT-001 | SPEC: SPEC-TIMEOUT-HANDLING-001
|
|
3
|
+
"""Cross-Platform Timeout Handler for Windows & Unix Compatibility
|
|
4
|
+
|
|
5
|
+
Provides a unified timeout mechanism that works on both Windows (threading-based)
|
|
6
|
+
and Unix/POSIX systems (signal-based).
|
|
7
|
+
|
|
8
|
+
Architecture:
|
|
9
|
+
- Windows: threading.Timer with exception injection
|
|
10
|
+
- Unix/POSIX: signal.SIGALRM (traditional approach)
|
|
11
|
+
- Both: Context manager for clean cancellation
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import platform
|
|
15
|
+
import signal
|
|
16
|
+
import threading
|
|
17
|
+
from contextlib import contextmanager
|
|
18
|
+
from typing import Callable, Optional
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class TimeoutError(Exception):
|
|
22
|
+
"""Timeout exception raised when deadline exceeded"""
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class CrossPlatformTimeout:
|
|
27
|
+
"""Cross-platform timeout handler supporting Windows and Unix.
|
|
28
|
+
|
|
29
|
+
Windows: Uses threading.Timer to schedule timeout exception
|
|
30
|
+
Unix: Uses signal.SIGALRM for timeout handling
|
|
31
|
+
|
|
32
|
+
Usage:
|
|
33
|
+
# Context manager (recommended)
|
|
34
|
+
with CrossPlatformTimeout(5):
|
|
35
|
+
long_running_operation()
|
|
36
|
+
|
|
37
|
+
# Manual control
|
|
38
|
+
timeout = CrossPlatformTimeout(5)
|
|
39
|
+
timeout.start()
|
|
40
|
+
try:
|
|
41
|
+
long_running_operation()
|
|
42
|
+
finally:
|
|
43
|
+
timeout.cancel()
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
def __init__(self, timeout_seconds: float, callback: Optional[Callable] = None):
|
|
47
|
+
"""Initialize timeout with duration in seconds.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
timeout_seconds: Timeout duration in seconds (float or int)
|
|
51
|
+
callback: Optional callback to execute before raising TimeoutError
|
|
52
|
+
"""
|
|
53
|
+
# Convert float to int for signal.alarm()
|
|
54
|
+
self.timeout_seconds = timeout_seconds
|
|
55
|
+
self.timeout_seconds_int = max(1, int(timeout_seconds)) # signal.alarm requires >=1
|
|
56
|
+
self.callback = callback
|
|
57
|
+
self.timer: Optional[threading.Timer] = None
|
|
58
|
+
self._is_windows = platform.system() == "Windows"
|
|
59
|
+
self._old_handler = None
|
|
60
|
+
|
|
61
|
+
def start(self) -> None:
|
|
62
|
+
"""Start timeout countdown."""
|
|
63
|
+
# Handle zero/negative timeouts
|
|
64
|
+
if self.timeout_seconds <= 0:
|
|
65
|
+
if self.timeout_seconds == 0:
|
|
66
|
+
# Zero timeout: raise immediately
|
|
67
|
+
if self.callback:
|
|
68
|
+
self.callback()
|
|
69
|
+
raise TimeoutError("Timeout of 0 seconds exceeded immediately")
|
|
70
|
+
else:
|
|
71
|
+
# Negative timeout: don't timeout at all
|
|
72
|
+
return
|
|
73
|
+
|
|
74
|
+
if self._is_windows:
|
|
75
|
+
self._start_windows_timeout()
|
|
76
|
+
else:
|
|
77
|
+
self._start_unix_timeout()
|
|
78
|
+
|
|
79
|
+
def cancel(self) -> None:
|
|
80
|
+
"""Cancel timeout (must call before timeout expires)."""
|
|
81
|
+
if self._is_windows:
|
|
82
|
+
self._cancel_windows_timeout()
|
|
83
|
+
else:
|
|
84
|
+
self._cancel_unix_timeout()
|
|
85
|
+
|
|
86
|
+
def _start_windows_timeout(self) -> None:
|
|
87
|
+
"""Windows: Use threading.Timer to raise exception."""
|
|
88
|
+
def timeout_handler():
|
|
89
|
+
if self.callback:
|
|
90
|
+
self.callback()
|
|
91
|
+
raise TimeoutError(
|
|
92
|
+
f"Operation exceeded {self.timeout_seconds}s timeout (Windows threading)"
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
self.timer = threading.Timer(self.timeout_seconds, timeout_handler)
|
|
96
|
+
self.timer.daemon = True
|
|
97
|
+
self.timer.start()
|
|
98
|
+
|
|
99
|
+
def _cancel_windows_timeout(self) -> None:
|
|
100
|
+
"""Windows: Cancel timer thread."""
|
|
101
|
+
if self.timer:
|
|
102
|
+
self.timer.cancel()
|
|
103
|
+
self.timer = None
|
|
104
|
+
|
|
105
|
+
def _start_unix_timeout(self) -> None:
|
|
106
|
+
"""Unix/POSIX: Use signal.SIGALRM for timeout."""
|
|
107
|
+
def signal_handler(signum, frame):
|
|
108
|
+
if self.callback:
|
|
109
|
+
try:
|
|
110
|
+
self.callback()
|
|
111
|
+
except Exception:
|
|
112
|
+
# Ignore callback exceptions, timeout error takes precedence
|
|
113
|
+
pass
|
|
114
|
+
raise TimeoutError(
|
|
115
|
+
f"Operation exceeded {self.timeout_seconds}s timeout (Unix signal)"
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Save old handler to restore later
|
|
119
|
+
self._old_handler = signal.signal(signal.SIGALRM, signal_handler)
|
|
120
|
+
# Use integer timeout_seconds_int for signal.alarm()
|
|
121
|
+
signal.alarm(self.timeout_seconds_int)
|
|
122
|
+
|
|
123
|
+
def _cancel_unix_timeout(self) -> None:
|
|
124
|
+
"""Unix/POSIX: Cancel alarm and restore old handler."""
|
|
125
|
+
signal.alarm(0) # Cancel pending alarm
|
|
126
|
+
if self._old_handler is not None:
|
|
127
|
+
signal.signal(signal.SIGALRM, self._old_handler)
|
|
128
|
+
self._old_handler = None
|
|
129
|
+
|
|
130
|
+
def __enter__(self):
|
|
131
|
+
"""Context manager entry."""
|
|
132
|
+
self.start()
|
|
133
|
+
return self
|
|
134
|
+
|
|
135
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
136
|
+
"""Context manager exit - always cancel."""
|
|
137
|
+
self.cancel()
|
|
138
|
+
return False # Don't suppress exceptions
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@contextmanager
|
|
142
|
+
def timeout_context(timeout_seconds: float, callback: Optional[Callable] = None):
|
|
143
|
+
"""Decorator/context manager for timeout.
|
|
144
|
+
|
|
145
|
+
Usage:
|
|
146
|
+
with timeout_context(5):
|
|
147
|
+
slow_function()
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
timeout_seconds: Timeout duration in seconds (float or int)
|
|
151
|
+
callback: Optional callback to execute before raising TimeoutError
|
|
152
|
+
|
|
153
|
+
Yields:
|
|
154
|
+
CrossPlatformTimeout instance
|
|
155
|
+
"""
|
|
156
|
+
timeout = CrossPlatformTimeout(timeout_seconds, callback=callback)
|
|
157
|
+
timeout.start()
|
|
158
|
+
try:
|
|
159
|
+
yield timeout
|
|
160
|
+
finally:
|
|
161
|
+
timeout.cancel()
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"hooks": [
|
|
12
12
|
{
|
|
13
|
-
"command": "uv run .claude/hooks/alfred/
|
|
13
|
+
"command": "uv run .claude/hooks/alfred/session_start__show_project_info.py",
|
|
14
14
|
"type": "command"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{
|
|
21
21
|
"hooks": [
|
|
22
22
|
{
|
|
23
|
-
"command": "uv run .claude/hooks/alfred/
|
|
23
|
+
"command": "uv run .claude/hooks/alfred/pre_tool__auto_checkpoint.py",
|
|
24
24
|
"type": "command"
|
|
25
25
|
}
|
|
26
26
|
],
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
{
|
|
32
32
|
"hooks": [
|
|
33
33
|
{
|
|
34
|
-
"command": "uv run .claude/hooks/alfred/
|
|
34
|
+
"command": "uv run .claude/hooks/alfred/user_prompt__jit_load_docs.py",
|
|
35
35
|
"type": "command"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
{
|
|
42
42
|
"hooks": [
|
|
43
43
|
{
|
|
44
|
-
"command": "uv run .claude/hooks/alfred/
|
|
44
|
+
"command": "uv run .claude/hooks/alfred/session_end__cleanup.py",
|
|
45
45
|
"type": "command"
|
|
46
46
|
}
|
|
47
47
|
]
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
{
|
|
52
52
|
"hooks": [
|
|
53
53
|
{
|
|
54
|
-
"command": "uv run .claude/hooks/alfred/
|
|
54
|
+
"command": "uv run .claude/hooks/alfred/post_tool__log_changes.py",
|
|
55
55
|
"type": "command"
|
|
56
56
|
}
|
|
57
57
|
],
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-alfred-agent-guide
|
|
3
|
+
description: "19-agent team structure, decision trees for agent selection, Haiku vs Sonnet model selection, and agent collaboration principles. Use when deciding which sub-agent to invoke, understanding team responsibilities, or learning multi-agent orchestration."
|
|
4
|
+
allowed-tools: "Read, Glob, Grep"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
MoAI-ADK의 19개 Sub-agent 아키텍처, 어떤 agent를 선택할지 결정하는 트리, Haiku/Sonnet 모델 선택 기준을 정의합니다.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- ✅ 어떤 sub-agent를 invoke할지 불명확
|
|
14
|
+
- ✅ Agent 책임 범위 학습
|
|
15
|
+
- ✅ Haiku vs Sonnet 모델 선택 필요
|
|
16
|
+
- ✅ Multi-agent 협업 패턴 이해
|
|
17
|
+
|
|
18
|
+
## Agent Team at a Glance
|
|
19
|
+
|
|
20
|
+
### 10 Core Sub-agents (Sonnet)
|
|
21
|
+
- spec-builder: SPEC 작성
|
|
22
|
+
- tdd-implementer: TDD 구현 (RED → GREEN → REFACTOR)
|
|
23
|
+
- doc-syncer: 문서 동기화
|
|
24
|
+
- implementation-planner: 구현 전략
|
|
25
|
+
- debug-helper: 오류 분석
|
|
26
|
+
- quality-gate: TRUST 5 검증
|
|
27
|
+
- tag-agent: TAG 체인 검증
|
|
28
|
+
- git-manager: Git 워크플로우
|
|
29
|
+
- Explore: 코드베이스 탐색
|
|
30
|
+
- Plan: 작업 계획
|
|
31
|
+
|
|
32
|
+
### 4 Expert Agents (Sonnet - Proactively Triggered)
|
|
33
|
+
- **backend-expert**: Backend 아키텍처, API 설계, 데이터베이스
|
|
34
|
+
- **frontend-expert**: Frontend 아키텍처, 컴포넌트 설계, 상태 관리
|
|
35
|
+
- **devops-expert**: DevOps 전략, 배포, 인프라
|
|
36
|
+
- **ui-ux-expert**: UI/UX 설계, 접근성, 디자인 시스템 (Figma MCP)
|
|
37
|
+
|
|
38
|
+
### 6 Specialist Agents (Haiku)
|
|
39
|
+
- project-manager: 프로젝트 초기화
|
|
40
|
+
- skill-factory: Skill 생성/최적화
|
|
41
|
+
- cc-manager: Claude Code 설정
|
|
42
|
+
- cc-hooks: Hook 시스템
|
|
43
|
+
- cc-mcp-plugins: MCP 서버
|
|
44
|
+
- trust-checker: TRUST 검증
|
|
45
|
+
|
|
46
|
+
## Agent Selection Decision Tree
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Task Type?
|
|
50
|
+
├─ SPEC 작성/검증 → spec-builder
|
|
51
|
+
├─ TDD 구현 → tdd-implementer
|
|
52
|
+
├─ 문서 동기화 → doc-syncer
|
|
53
|
+
├─ 구현 계획 → implementation-planner
|
|
54
|
+
├─ 오류 분석 → debug-helper
|
|
55
|
+
├─ 품질 검증 → quality-gate + Skill("moai-foundation-trust")
|
|
56
|
+
├─ 코드베이스 탐색 → Explore
|
|
57
|
+
├─ Git 워크플로우 → git-manager
|
|
58
|
+
└─ 전체 프로젝트 계획 → Plan
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Model Selection
|
|
62
|
+
|
|
63
|
+
- **Sonnet**: Complex reasoning (spec-builder, tdd-implementer, implementation-planner)
|
|
64
|
+
- **Haiku**: Fast execution (project-manager, quality-gate, git-manager)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
Learn more in `reference.md` for complete agent responsibilities, collaboration patterns, and advanced orchestration strategies.
|
|
69
|
+
|
|
70
|
+
**Related Skills**: moai-alfred-rules, moai-alfred-practices
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Agent Selection Examples
|
|
2
|
+
|
|
3
|
+
## Example 1: New Feature Request
|
|
4
|
+
|
|
5
|
+
**User**: "Add two-factor authentication"
|
|
6
|
+
|
|
7
|
+
**Decision Tree**:
|
|
8
|
+
```
|
|
9
|
+
Task = Feature Implementation
|
|
10
|
+
↓
|
|
11
|
+
Create SPEC first? → YES
|
|
12
|
+
Invoke: spec-builder
|
|
13
|
+
↓
|
|
14
|
+
Write Tests? → YES
|
|
15
|
+
Invoke: tdd-implementer
|
|
16
|
+
↓
|
|
17
|
+
Need Code Review? → YES
|
|
18
|
+
Invoke: quality-gate + Skill("moai-foundation-trust")
|
|
19
|
+
↓
|
|
20
|
+
Update Documentation? → YES
|
|
21
|
+
Invoke: doc-syncer
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Result**: Proper agent sequence avoids rework
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Example 2: Bug Fix Triage
|
|
29
|
+
|
|
30
|
+
**Error**: "TypeError: undefined is not a function"
|
|
31
|
+
|
|
32
|
+
**Agent Sequence**:
|
|
33
|
+
1. Invoke: debug-helper
|
|
34
|
+
- Analyze stack trace
|
|
35
|
+
- Identify root cause
|
|
36
|
+
2. Invoke: tdd-implementer
|
|
37
|
+
- Write regression test
|
|
38
|
+
- Fix implementation
|
|
39
|
+
3. Invoke: git-manager
|
|
40
|
+
- Commit with @TAG
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Example 3: Large Codebase Exploration
|
|
45
|
+
|
|
46
|
+
**Task**: "How is authentication implemented?"
|
|
47
|
+
|
|
48
|
+
✅ Correct:
|
|
49
|
+
```
|
|
50
|
+
Invoke: Explore(prompt="Find auth flow, entry points, models")
|
|
51
|
+
Result: Clear architecture map
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
❌ Wrong:
|
|
55
|
+
```
|
|
56
|
+
Manual grep for 20+ files
|
|
57
|
+
Result: Bloated context, still confused
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
Learn more in `reference.md` for complete decision tree and multi-agent patterns.
|
|
@@ -68,6 +68,40 @@ The **code-builder pipeline** runs two Sonnet specialists in sequence: **impleme
|
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
|
+
## Expert Agents (Proactively Triggered by SPEC Keywords)
|
|
72
|
+
|
|
73
|
+
| Expert Agent | Model | Specialty | Trigger Keywords | Trigger Source |
|
|
74
|
+
| ----------------------- | ------ | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------- |
|
|
75
|
+
| **backend-expert** 🔧 | Sonnet | Backend architecture, API design, database schema, microservices, authentication | 'backend', 'api', 'server', 'database', 'microservice', 'deployment', 'authentication' | implementation-planner |
|
|
76
|
+
| **frontend-expert** 💻 | Sonnet | Frontend architecture, component design, state management, UI/UX implementation | 'frontend', 'ui', 'page', 'component', 'client-side', 'browser', 'web interface' | implementation-planner |
|
|
77
|
+
| **devops-expert** 🚀 | Sonnet | DevOps strategy, deployment automation, containerization, CI/CD, cloud infrastructure | 'deployment', 'docker', 'kubernetes', 'ci/cd', 'pipeline', 'infrastructure', 'railway', 'vercel', 'aws' | implementation-planner |
|
|
78
|
+
| **ui-ux-expert** 🎨 | Sonnet | UI/UX design, accessibility (WCAG 2.1 AA/AAA), design systems, Figma MCP, design-to-code | 'design', 'ux', 'ui', 'accessibility', 'a11y', 'user experience', 'wireframe', 'prototype', 'design system', 'figma', 'user research', 'persona', 'journey map' | implementation-planner |
|
|
79
|
+
|
|
80
|
+
### How Expert Agents Work
|
|
81
|
+
|
|
82
|
+
1. **Automatic Keyword Detection**: When `implementation-planner` analyzes a SPEC, it scans for expert trigger keywords
|
|
83
|
+
2. **Proactive Delegation**: If keywords match, `implementation-planner` automatically invokes the relevant expert agent(s)
|
|
84
|
+
3. **Expert Consultation**: Each expert provides domain-specific architecture guidance, technology recommendations, and risk analysis
|
|
85
|
+
4. **Integration**: Expert feedback is integrated into the implementation plan and tagged with `@EXPERT:DOMAIN` for traceability
|
|
86
|
+
|
|
87
|
+
### Example: Full-Stack Authentication SPEC
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
SPEC Keywords: 'api', 'authentication', 'design', 'accessibility'
|
|
91
|
+
|
|
92
|
+
→ Trigger backend-expert (for API & auth architecture)
|
|
93
|
+
→ Trigger ui-ux-expert (for login UI & accessibility)
|
|
94
|
+
|
|
95
|
+
Result:
|
|
96
|
+
@SPEC:AUTH-001 | @EXPERT:BACKEND | @EXPERT:UIUX
|
|
97
|
+
|
|
98
|
+
Implementation Plan includes:
|
|
99
|
+
- Backend: JWT token strategy, rate limiting, audit logging
|
|
100
|
+
- UI/UX: Accessible login form (WCAG 2.1 AA), error messaging
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
71
105
|
## Zero-project Specialists
|
|
72
106
|
|
|
73
107
|
| Sub-agent | Model | Focus | Trigger |
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-alfred-config-schema
|
|
3
|
+
description: ".moai/config.json official schema documentation, structure validation, project metadata, language settings, and configuration migration guide. Use when setting up project configuration or understanding config.json structure."
|
|
4
|
+
allowed-tools: "Read, Grep"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
`.moai/config.json` 파일의 공식 스키마와 각 필드의 목적, 유효한 값, 마이그레이션 규칙을 정의합니다.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- ✅ Project 초기화 후 config.json 설정
|
|
14
|
+
- ✅ config.json 스키마 이해
|
|
15
|
+
- ✅ Language settings, git strategy, TAG configuration 변경
|
|
16
|
+
- ✅ Legacy config 마이그레이션
|
|
17
|
+
|
|
18
|
+
## Schema Overview
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"version": "0.7.0",
|
|
23
|
+
"project": {
|
|
24
|
+
"name": "ProjectName",
|
|
25
|
+
"codebase_language": "python",
|
|
26
|
+
"conversation_language": "ko",
|
|
27
|
+
"conversation_language_name": "Korean"
|
|
28
|
+
},
|
|
29
|
+
"language": {
|
|
30
|
+
"conversation_language": "ko",
|
|
31
|
+
"conversation_language_name": "Korean"
|
|
32
|
+
},
|
|
33
|
+
"git": {
|
|
34
|
+
"strategy": "github-pr",
|
|
35
|
+
"main_branch": "main",
|
|
36
|
+
"protected": true
|
|
37
|
+
},
|
|
38
|
+
"tag": {
|
|
39
|
+
"prefix_style": "DOMAIN-###"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Top-Level Sections
|
|
45
|
+
|
|
46
|
+
- **version**: Configuration version (do not edit)
|
|
47
|
+
- **project**: Name, codebase language, conversation language
|
|
48
|
+
- **language**: Multi-language support settings
|
|
49
|
+
- **git**: GitHub workflow strategy
|
|
50
|
+
- **tag**: TAG system configuration
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
Learn more in `reference.md` for complete schema reference, validation rules, and migration examples.
|
|
55
|
+
|
|
56
|
+
**Related Skills**: moai-alfred-dev-guide, moai-foundation-specs
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Config.json Examples
|
|
2
|
+
|
|
3
|
+
## Example: Korean Project Setup
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"version": "0.7.0",
|
|
8
|
+
"project": {
|
|
9
|
+
"name": "MyKoreanProject",
|
|
10
|
+
"codebase_language": "python",
|
|
11
|
+
"conversation_language": "ko",
|
|
12
|
+
"conversation_language_name": "Korean"
|
|
13
|
+
},
|
|
14
|
+
"language": {
|
|
15
|
+
"conversation_language": "ko",
|
|
16
|
+
"conversation_language_name": "Korean"
|
|
17
|
+
},
|
|
18
|
+
"git": {
|
|
19
|
+
"strategy": "github-pr",
|
|
20
|
+
"main_branch": "main",
|
|
21
|
+
"protected": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Learn more in `reference.md`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-alfred-context-budget
|
|
3
|
+
description: "Claude Code context window optimization strategies, JIT retrieval, progressive loading, memory file patterns, and cleanup practices. Use when optimizing context usage, managing large projects, or implementing efficient workflows."
|
|
4
|
+
allowed-tools: "Read, Grep"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
Claude Code context budget (100K-200K tokens)의 효율적 관리 전략, progressive disclosure, JIT retrieval, memory file 구조화 방법을 제공합니다.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- ✅ Context limit 도달 위험성 있을 때
|
|
14
|
+
- ✅ 대규모 프로젝트의 context 관리 필요
|
|
15
|
+
- ✅ Session handoff 준비
|
|
16
|
+
- ✅ Memory file 구조 설계/정리
|
|
17
|
+
|
|
18
|
+
## Context Budget Overview
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Total: 100K-200K tokens
|
|
22
|
+
├── System Prompt: ~2K
|
|
23
|
+
├── Tools & Instructions: ~5K
|
|
24
|
+
├── Session History: ~30K
|
|
25
|
+
├── Project Context: ~40K
|
|
26
|
+
└── Available for Response: ~23K
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Progressive Disclosure Pattern
|
|
30
|
+
|
|
31
|
+
1. **Metadata** (always): Skill name, description, triggers
|
|
32
|
+
2. **Content** (on-demand): Full SKILL.md when invoked
|
|
33
|
+
3. **Supporting** (JIT): Examples, templates when referenced
|
|
34
|
+
|
|
35
|
+
## JIT Retrieval Principles
|
|
36
|
+
|
|
37
|
+
- Pull only what you need for immediate step
|
|
38
|
+
- Prefer `Explore` over manual file hunting
|
|
39
|
+
- Cache critical insights for reuse
|
|
40
|
+
- Remove unnecessary files regularly
|
|
41
|
+
|
|
42
|
+
## Best Practices
|
|
43
|
+
|
|
44
|
+
✅ DO:
|
|
45
|
+
- Use Explore for large searches
|
|
46
|
+
- Cache results in memory files
|
|
47
|
+
- Keep memory files < 500 lines each
|
|
48
|
+
- Update session-summary.md before task switches
|
|
49
|
+
- Archive completed work
|
|
50
|
+
|
|
51
|
+
❌ DON'T:
|
|
52
|
+
- Load entire src/ directory upfront
|
|
53
|
+
- Duplicate context between files
|
|
54
|
+
- Store memory files outside `.moai/memory/`
|
|
55
|
+
- Leave stale session notes (archive or delete)
|
|
56
|
+
- Cache raw code (summarize instead)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
Learn more in `reference.md` for detailed JIT strategy, memory patterns, context budget calculations, and management practices.
|
|
61
|
+
|
|
62
|
+
**Related Skills**: moai-alfred-practices, moai-cc-memory
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Context Budget Optimization Examples
|
|
2
|
+
|
|
3
|
+
## Memory File Structure
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
.moai/memory/
|
|
7
|
+
├── session-summary.md # Current task, key files, assumptions
|
|
8
|
+
├── architecture.md # System design reference
|
|
9
|
+
├── gotchas.md # Common pitfalls
|
|
10
|
+
└── archive/ # Completed sessions
|
|
11
|
+
├── feature-auth-*
|
|
12
|
+
└── feature-api-*
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## JIT Retrieval Example
|
|
16
|
+
|
|
17
|
+
**Task**: Add email verification
|
|
18
|
+
|
|
19
|
+
**JIT Loading**:
|
|
20
|
+
- Read: User model (src/domain/user.ts)
|
|
21
|
+
- Read: Signup endpoint (src/api/auth.ts)
|
|
22
|
+
- Cache: Signup flow summary in memory
|
|
23
|
+
|
|
24
|
+
**Result**: Context efficiency, clear understanding
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Learn more in `reference.md`.
|