@redigg/redigg 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/agent/ResearchAgent.d.ts +35 -0
- package/dist/agent/ResearchAgent.js +818 -0
- package/dist/agent/ResearchAgent.js.map +1 -0
- package/dist/agent/subagent/SubAgent.d.ts +23 -0
- package/dist/agent/subagent/SubAgent.js +87 -0
- package/dist/agent/subagent/SubAgent.js.map +1 -0
- package/dist/agent/subagent/SubAgentManager.d.ts +19 -0
- package/dist/agent/subagent/SubAgentManager.js +40 -0
- package/dist/agent/subagent/SubAgentManager.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +34 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +179 -0
- package/dist/cli.js.map +1 -0
- package/dist/events/EventManager.d.ts +39 -0
- package/dist/events/EventManager.js +20 -0
- package/dist/events/EventManager.js.map +1 -0
- package/dist/gateway/index.d.ts +9 -0
- package/dist/gateway/index.js +474 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/LLMClient.d.ts +30 -0
- package/dist/llm/LLMClient.js +21 -0
- package/dist/llm/LLMClient.js.map +1 -0
- package/dist/llm/OpenAIClient.d.ts +16 -0
- package/dist/llm/OpenAIClient.js +58 -0
- package/dist/llm/OpenAIClient.js.map +1 -0
- package/dist/memory/MemoryManager.d.ts +41 -0
- package/dist/memory/MemoryManager.js +221 -0
- package/dist/memory/MemoryManager.js.map +1 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.js +71 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
- package/dist/memory/search/BM25Search.d.ts +22 -0
- package/dist/memory/search/BM25Search.js +61 -0
- package/dist/memory/search/BM25Search.js.map +1 -0
- package/dist/memory/structure/PageIndex.d.ts +26 -0
- package/dist/memory/structure/PageIndex.js +156 -0
- package/dist/memory/structure/PageIndex.js.map +1 -0
- package/dist/quality/QualityManager.d.ts +12 -0
- package/dist/quality/QualityManager.js +61 -0
- package/dist/quality/QualityManager.js.map +1 -0
- package/dist/scheduling/CronManager.d.ts +21 -0
- package/dist/scheduling/CronManager.js +66 -0
- package/dist/scheduling/CronManager.js.map +1 -0
- package/dist/session/SessionManager.d.ts +37 -0
- package/dist/session/SessionManager.js +238 -0
- package/dist/session/SessionManager.js.map +1 -0
- package/dist/skills/SkillManager.d.ts +31 -0
- package/dist/skills/SkillManager.js +254 -0
- package/dist/skills/SkillManager.js.map +1 -0
- package/dist/skills/agent/PACK.md +13 -0
- package/dist/skills/agent/agent-orchestration/SKILL.md +37 -0
- package/dist/skills/agent/agent-orchestration/index.d.ts +9 -0
- package/dist/skills/agent/agent-orchestration/index.js +70 -0
- package/dist/skills/agent/agent-orchestration/index.js.map +1 -0
- package/dist/skills/agent/evolution/SKILL.md +25 -0
- package/dist/skills/agent/evolution/index.d.ts +9 -0
- package/dist/skills/agent/evolution/index.js +57 -0
- package/dist/skills/agent/evolution/index.js.map +1 -0
- package/dist/skills/agent/heartbeat/index.d.ts +8 -0
- package/dist/skills/agent/heartbeat/index.js +44 -0
- package/dist/skills/agent/heartbeat/index.js.map +1 -0
- package/dist/skills/agent/memory-management/SKILL.md +40 -0
- package/dist/skills/agent/memory-management/index.d.ts +8 -0
- package/dist/skills/agent/memory-management/index.js +44 -0
- package/dist/skills/agent/memory-management/index.js.map +1 -0
- package/dist/skills/agent/scheduling/SKILL.md +33 -0
- package/dist/skills/agent/scheduling/index.d.ts +13 -0
- package/dist/skills/agent/scheduling/index.js +80 -0
- package/dist/skills/agent/scheduling/index.js.map +1 -0
- package/dist/skills/agent/session-management/SKILL.md +35 -0
- package/dist/skills/agent/session-management/index.d.ts +11 -0
- package/dist/skills/agent/session-management/index.js +54 -0
- package/dist/skills/agent/session-management/index.js.map +1 -0
- package/dist/skills/agent/skill-management/SKILL.md +31 -0
- package/dist/skills/agent/skill-management/index.d.ts +8 -0
- package/dist/skills/agent/skill-management/index.js +25 -0
- package/dist/skills/agent/skill-management/index.js.map +1 -0
- package/dist/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
- package/dist/skills/evolution/SkillEvolutionSystem.js +157 -0
- package/dist/skills/evolution/SkillEvolutionSystem.js.map +1 -0
- package/dist/skills/lib/ScholarTool.d.ts +14 -0
- package/dist/skills/lib/ScholarTool.js +71 -0
- package/dist/skills/lib/ScholarTool.js.map +1 -0
- package/dist/skills/research/PACK.md +7 -0
- package/dist/skills/research/academic-survey-self-improve/SKILL.md +17 -0
- package/dist/skills/research/academic-survey-self-improve/index.d.ts +10 -0
- package/dist/skills/research/academic-survey-self-improve/index.js +75 -0
- package/dist/skills/research/academic-survey-self-improve/index.js.map +1 -0
- package/dist/skills/research/concept-explainer/SKILL.md +3 -0
- package/dist/skills/research/concept-explainer/index.d.ts +8 -0
- package/dist/skills/research/concept-explainer/index.js +37 -0
- package/dist/skills/research/concept-explainer/index.js.map +1 -0
- package/dist/skills/research/literature-review/SKILL.md +25 -0
- package/dist/skills/research/literature-review/index.d.ts +9 -0
- package/dist/skills/research/literature-review/index.js +132 -0
- package/dist/skills/research/literature-review/index.js.map +1 -0
- package/dist/skills/research/paper-analysis/SKILL.md +3 -0
- package/dist/skills/research/paper-analysis/index.d.ts +9 -0
- package/dist/skills/research/paper-analysis/index.js +64 -0
- package/dist/skills/research/paper-analysis/index.js.map +1 -0
- package/dist/skills/research/pdf-generator/SKILL.md +16 -0
- package/dist/skills/research/pdf-generator/index.d.ts +10 -0
- package/dist/skills/research/pdf-generator/index.js +88 -0
- package/dist/skills/research/pdf-generator/index.js.map +1 -0
- package/dist/skills/system/PACK.md +8 -0
- package/dist/skills/system/code-analysis/SKILL.md +43 -0
- package/dist/skills/system/code-analysis/index.d.ts +12 -0
- package/dist/skills/system/code-analysis/index.js +172 -0
- package/dist/skills/system/code-analysis/index.js.map +1 -0
- package/dist/skills/system/local-file-ops/SKILL.md +55 -0
- package/dist/skills/system/local-file-ops/index.d.ts +9 -0
- package/dist/skills/system/local-file-ops/index.js +111 -0
- package/dist/skills/system/local-file-ops/index.js.map +1 -0
- package/dist/skills/types.d.ts +41 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/vendor/PACK.md +11 -0
- package/dist/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
- package/dist/skills/vendor/agent-browser/SKILL.md +328 -0
- package/dist/skills/vendor/find-skills/SKILL.md +133 -0
- package/dist/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
- package/dist/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
- package/dist/skills/vendor/proactive-agent/SKILL.md +632 -0
- package/dist/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
- package/dist/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
- package/dist/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
- package/dist/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
- package/dist/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
- package/dist/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
- package/dist/skills/vendor/proactive-agent/assets/USER.md +36 -0
- package/dist/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
- package/dist/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
- package/dist/skills/vendor/searxng/CHANGELOG.md +38 -0
- package/dist/skills/vendor/searxng/PUBLISH.md +147 -0
- package/dist/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
- package/dist/skills/vendor/searxng/README.md +168 -0
- package/dist/skills/vendor/searxng/SKILL.md +69 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/SKILL.md +647 -0
- package/dist/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/dist/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.d.ts +9 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +54 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js.map +1 -0
- package/dist/skills/vendor/self-improving-agent/references/examples.md +374 -0
- package/dist/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
- package/dist/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
- package/dist/skills/vendor/skill-vetter/SKILL.md +138 -0
- package/dist/src/agent/ResearchAgent.d.ts +35 -0
- package/dist/src/agent/ResearchAgent.js +818 -0
- package/dist/src/agent/ResearchAgent.js.map +1 -0
- package/dist/src/agent/subagent/SubAgent.d.ts +23 -0
- package/dist/src/agent/subagent/SubAgent.js +87 -0
- package/dist/src/agent/subagent/SubAgent.js.map +1 -0
- package/dist/src/agent/subagent/SubAgentManager.d.ts +19 -0
- package/dist/src/agent/subagent/SubAgentManager.js +40 -0
- package/dist/src/agent/subagent/SubAgentManager.js.map +1 -0
- package/dist/src/bin.d.ts +2 -0
- package/dist/src/bin.js +34 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.js +179 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/events/EventManager.d.ts +39 -0
- package/dist/src/events/EventManager.js +20 -0
- package/dist/src/events/EventManager.js.map +1 -0
- package/dist/src/gateway/index.d.ts +9 -0
- package/dist/src/gateway/index.js +474 -0
- package/dist/src/gateway/index.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +105 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/llm/LLMClient.d.ts +30 -0
- package/dist/src/llm/LLMClient.js +21 -0
- package/dist/src/llm/LLMClient.js.map +1 -0
- package/dist/src/llm/OpenAIClient.d.ts +16 -0
- package/dist/src/llm/OpenAIClient.js +58 -0
- package/dist/src/llm/OpenAIClient.js.map +1 -0
- package/dist/src/memory/MemoryManager.d.ts +41 -0
- package/dist/src/memory/MemoryManager.js +221 -0
- package/dist/src/memory/MemoryManager.js.map +1 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.js +71 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
- package/dist/src/memory/search/BM25Search.d.ts +22 -0
- package/dist/src/memory/search/BM25Search.js +61 -0
- package/dist/src/memory/search/BM25Search.js.map +1 -0
- package/dist/src/memory/structure/PageIndex.d.ts +26 -0
- package/dist/src/memory/structure/PageIndex.js +156 -0
- package/dist/src/memory/structure/PageIndex.js.map +1 -0
- package/dist/src/quality/QualityManager.d.ts +12 -0
- package/dist/src/quality/QualityManager.js +61 -0
- package/dist/src/quality/QualityManager.js.map +1 -0
- package/dist/src/scheduling/CronManager.d.ts +21 -0
- package/dist/src/scheduling/CronManager.js +66 -0
- package/dist/src/scheduling/CronManager.js.map +1 -0
- package/dist/src/session/SessionManager.d.ts +37 -0
- package/dist/src/session/SessionManager.js +238 -0
- package/dist/src/session/SessionManager.js.map +1 -0
- package/dist/src/skills/SkillManager.d.ts +33 -0
- package/dist/src/skills/SkillManager.js +260 -0
- package/dist/src/skills/SkillManager.js.map +1 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.js +157 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.js.map +1 -0
- package/dist/src/skills/lib/ScholarTool.d.ts +14 -0
- package/dist/src/skills/lib/ScholarTool.js +71 -0
- package/dist/src/skills/lib/ScholarTool.js.map +1 -0
- package/dist/src/skills/types.d.ts +41 -0
- package/dist/src/skills/types.js +2 -0
- package/dist/src/skills/types.js.map +1 -0
- package/dist/src/storage/sqlite.d.ts +8 -0
- package/dist/src/storage/sqlite.js +73 -0
- package/dist/src/storage/sqlite.js.map +1 -0
- package/dist/src/utils/logger.d.ts +12 -0
- package/dist/src/utils/logger.js +53 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/storage/sqlite.d.ts +8 -0
- package/dist/storage/sqlite.js +73 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +53 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
- package/skills/agent/PACK.md +13 -0
- package/skills/agent/agent-orchestration/SKILL.md +37 -0
- package/skills/agent/agent-orchestration/index.ts +84 -0
- package/skills/agent/evolution/SKILL.md +25 -0
- package/skills/agent/evolution/index.ts +67 -0
- package/skills/agent/heartbeat/index.ts +48 -0
- package/skills/agent/memory-management/SKILL.md +40 -0
- package/skills/agent/memory-management/index.ts +48 -0
- package/skills/agent/scheduling/SKILL.md +33 -0
- package/skills/agent/scheduling/index.ts +97 -0
- package/skills/agent/session-management/SKILL.md +35 -0
- package/skills/agent/session-management/index.ts +65 -0
- package/skills/agent/skill-management/SKILL.md +31 -0
- package/skills/agent/skill-management/index.ts +32 -0
- package/skills/research/PACK.md +7 -0
- package/skills/research/academic-survey-self-improve/SKILL.md +17 -0
- package/skills/research/academic-survey-self-improve/index.ts +87 -0
- package/skills/research/concept-explainer/SKILL.md +3 -0
- package/skills/research/concept-explainer/index.ts +42 -0
- package/skills/research/literature-review/SKILL.md +25 -0
- package/skills/research/literature-review/index.ts +168 -0
- package/skills/research/paper-analysis/SKILL.md +3 -0
- package/skills/research/paper-analysis/index.ts +73 -0
- package/skills/research/pdf-generator/SKILL.md +16 -0
- package/skills/research/pdf-generator/index.d.ts +10 -0
- package/skills/research/pdf-generator/index.js +114 -0
- package/skills/research/pdf-generator/index.js.map +1 -0
- package/skills/research/pdf-generator/index.ts +97 -0
- package/skills/system/PACK.md +8 -0
- package/skills/system/code-analysis/SKILL.md +43 -0
- package/skills/system/code-analysis/index.ts +180 -0
- package/skills/system/local-file-ops/SKILL.md +55 -0
- package/skills/system/local-file-ops/index.ts +123 -0
- package/skills/vendor/PACK.md +11 -0
- package/skills/vendor/agent-browser/.clawhub/origin.json +7 -0
- package/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
- package/skills/vendor/agent-browser/SKILL.md +328 -0
- package/skills/vendor/agent-browser/_meta.json +6 -0
- package/skills/vendor/find-skills/.clawhub/origin.json +7 -0
- package/skills/vendor/find-skills/SKILL.md +133 -0
- package/skills/vendor/find-skills/_meta.json +6 -0
- package/skills/vendor/proactive-agent/.clawhub/origin.json +7 -0
- package/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
- package/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
- package/skills/vendor/proactive-agent/SKILL.md +632 -0
- package/skills/vendor/proactive-agent/_meta.json +6 -0
- package/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
- package/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
- package/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
- package/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
- package/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
- package/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
- package/skills/vendor/proactive-agent/assets/USER.md +36 -0
- package/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
- package/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
- package/skills/vendor/proactive-agent/scripts/security-audit.sh +149 -0
- package/skills/vendor/searxng/.clawdhub/origin.json +7 -0
- package/skills/vendor/searxng/CHANGELOG.md +38 -0
- package/skills/vendor/searxng/PUBLISH.md +147 -0
- package/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
- package/skills/vendor/searxng/README.md +168 -0
- package/skills/vendor/searxng/SKILL.md +69 -0
- package/skills/vendor/searxng/_meta.json +6 -0
- package/skills/vendor/searxng/config/settings.yml +36 -0
- package/skills/vendor/searxng/run-searxng.sh +48 -0
- package/skills/vendor/searxng/scripts/searxng.py +211 -0
- package/skills/vendor/self-improving-agent/.clawhub/origin.json +7 -0
- package/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/skills/vendor/self-improving-agent/SKILL.md +647 -0
- package/skills/vendor/self-improving-agent/_meta.json +6 -0
- package/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +56 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/handler.ts +62 -0
- package/skills/vendor/self-improving-agent/references/examples.md +374 -0
- package/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
- package/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
- package/skills/vendor/self-improving-agent/scripts/activator.sh +20 -0
- package/skills/vendor/self-improving-agent/scripts/error-detector.sh +55 -0
- package/skills/vendor/self-improving-agent/scripts/extract-skill.sh +221 -0
- package/skills/vendor/skill-vetter/.clawhub/origin.json +7 -0
- package/skills/vendor/skill-vetter/SKILL.md +138 -0
- package/skills/vendor/skill-vetter/_meta.json +6 -0
- package/web/README.md +73 -0
- package/web/package.json +65 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Skill Template
|
|
2
|
+
|
|
3
|
+
Template for creating skills extracted from learnings. Copy and customize.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## SKILL.md Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
---
|
|
11
|
+
name: skill-name-here
|
|
12
|
+
description: "Concise description of when and why to use this skill. Include trigger conditions."
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Skill Name
|
|
16
|
+
|
|
17
|
+
Brief introduction explaining the problem this skill solves and its origin.
|
|
18
|
+
|
|
19
|
+
## Quick Reference
|
|
20
|
+
|
|
21
|
+
| Situation | Action |
|
|
22
|
+
|-----------|--------|
|
|
23
|
+
| [Trigger 1] | [Action 1] |
|
|
24
|
+
| [Trigger 2] | [Action 2] |
|
|
25
|
+
|
|
26
|
+
## Background
|
|
27
|
+
|
|
28
|
+
Why this knowledge matters. What problems it prevents. Context from the original learning.
|
|
29
|
+
|
|
30
|
+
## Solution
|
|
31
|
+
|
|
32
|
+
### Step-by-Step
|
|
33
|
+
|
|
34
|
+
1. First step with code or command
|
|
35
|
+
2. Second step
|
|
36
|
+
3. Verification step
|
|
37
|
+
|
|
38
|
+
### Code Example
|
|
39
|
+
|
|
40
|
+
\`\`\`language
|
|
41
|
+
// Example code demonstrating the solution
|
|
42
|
+
\`\`\`
|
|
43
|
+
|
|
44
|
+
## Common Variations
|
|
45
|
+
|
|
46
|
+
- **Variation A**: Description and how to handle
|
|
47
|
+
- **Variation B**: Description and how to handle
|
|
48
|
+
|
|
49
|
+
## Gotchas
|
|
50
|
+
|
|
51
|
+
- Warning or common mistake #1
|
|
52
|
+
- Warning or common mistake #2
|
|
53
|
+
|
|
54
|
+
## Related
|
|
55
|
+
|
|
56
|
+
- Link to related documentation
|
|
57
|
+
- Link to related skill
|
|
58
|
+
|
|
59
|
+
## Source
|
|
60
|
+
|
|
61
|
+
Extracted from learning entry.
|
|
62
|
+
- **Learning ID**: LRN-YYYYMMDD-XXX
|
|
63
|
+
- **Original Category**: correction | insight | knowledge_gap | best_practice
|
|
64
|
+
- **Extraction Date**: YYYY-MM-DD
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Minimal Template
|
|
70
|
+
|
|
71
|
+
For simple skills that don't need all sections:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
---
|
|
75
|
+
name: skill-name-here
|
|
76
|
+
description: "What this skill does and when to use it."
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
# Skill Name
|
|
80
|
+
|
|
81
|
+
[Problem statement in one sentence]
|
|
82
|
+
|
|
83
|
+
## Solution
|
|
84
|
+
|
|
85
|
+
[Direct solution with code/commands]
|
|
86
|
+
|
|
87
|
+
## Source
|
|
88
|
+
|
|
89
|
+
- Learning ID: LRN-YYYYMMDD-XXX
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Template with Scripts
|
|
95
|
+
|
|
96
|
+
For skills that include executable helpers:
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
---
|
|
100
|
+
name: skill-name-here
|
|
101
|
+
description: "What this skill does and when to use it."
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
# Skill Name
|
|
105
|
+
|
|
106
|
+
[Introduction]
|
|
107
|
+
|
|
108
|
+
## Quick Reference
|
|
109
|
+
|
|
110
|
+
| Command | Purpose |
|
|
111
|
+
|---------|---------|
|
|
112
|
+
| `./scripts/helper.sh` | [What it does] |
|
|
113
|
+
| `./scripts/validate.sh` | [What it does] |
|
|
114
|
+
|
|
115
|
+
## Usage
|
|
116
|
+
|
|
117
|
+
### Automated (Recommended)
|
|
118
|
+
|
|
119
|
+
\`\`\`bash
|
|
120
|
+
./skills/skill-name/scripts/helper.sh [args]
|
|
121
|
+
\`\`\`
|
|
122
|
+
|
|
123
|
+
### Manual Steps
|
|
124
|
+
|
|
125
|
+
1. Step one
|
|
126
|
+
2. Step two
|
|
127
|
+
|
|
128
|
+
## Scripts
|
|
129
|
+
|
|
130
|
+
| Script | Description |
|
|
131
|
+
|--------|-------------|
|
|
132
|
+
| `scripts/helper.sh` | Main utility |
|
|
133
|
+
| `scripts/validate.sh` | Validation checker |
|
|
134
|
+
|
|
135
|
+
## Source
|
|
136
|
+
|
|
137
|
+
- Learning ID: LRN-YYYYMMDD-XXX
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Naming Conventions
|
|
143
|
+
|
|
144
|
+
- **Skill name**: lowercase, hyphens for spaces
|
|
145
|
+
- Good: `docker-m1-fixes`, `api-timeout-patterns`
|
|
146
|
+
- Bad: `Docker_M1_Fixes`, `APITimeoutPatterns`
|
|
147
|
+
|
|
148
|
+
- **Description**: Start with action verb, mention trigger
|
|
149
|
+
- Good: "Handles Docker build failures on Apple Silicon. Use when builds fail with platform mismatch."
|
|
150
|
+
- Bad: "Docker stuff"
|
|
151
|
+
|
|
152
|
+
- **Files**:
|
|
153
|
+
- `SKILL.md` - Required, main documentation
|
|
154
|
+
- `scripts/` - Optional, executable code
|
|
155
|
+
- `references/` - Optional, detailed docs
|
|
156
|
+
- `assets/` - Optional, templates
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Extraction Checklist
|
|
161
|
+
|
|
162
|
+
Before creating a skill from a learning:
|
|
163
|
+
|
|
164
|
+
- [ ] Learning is verified (status: resolved)
|
|
165
|
+
- [ ] Solution is broadly applicable (not one-off)
|
|
166
|
+
- [ ] Content is complete (has all needed context)
|
|
167
|
+
- [ ] Name follows conventions
|
|
168
|
+
- [ ] Description is concise but informative
|
|
169
|
+
- [ ] Quick Reference table is actionable
|
|
170
|
+
- [ ] Code examples are tested
|
|
171
|
+
- [ ] Source learning ID is recorded
|
|
172
|
+
|
|
173
|
+
After creating:
|
|
174
|
+
|
|
175
|
+
- [ ] Update original learning with `promoted_to_skill` status
|
|
176
|
+
- [ ] Add `Skill-Path: skills/skill-name` to learning metadata
|
|
177
|
+
- [ ] Test skill by reading it in a fresh session
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: self-improvement
|
|
3
|
+
description: "Injects self-improvement reminder during agent bootstrap"
|
|
4
|
+
metadata: {"openclaw":{"emoji":"🧠","events":["agent:bootstrap"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Self-Improvement Hook
|
|
8
|
+
|
|
9
|
+
Injects a reminder to evaluate learnings during agent bootstrap.
|
|
10
|
+
|
|
11
|
+
## What It Does
|
|
12
|
+
|
|
13
|
+
- Fires on `agent:bootstrap` (before workspace files are injected)
|
|
14
|
+
- Adds a reminder block to check `.learnings/` for relevant entries
|
|
15
|
+
- Prompts the agent to log corrections, errors, and discoveries
|
|
16
|
+
|
|
17
|
+
## Configuration
|
|
18
|
+
|
|
19
|
+
No configuration needed. Enable with:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
openclaw hooks enable self-improvement
|
|
23
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-Improvement Hook for OpenClaw
|
|
3
|
+
*
|
|
4
|
+
* Injects a reminder to evaluate learnings during agent bootstrap.
|
|
5
|
+
* Fires on agent:bootstrap event before workspace files are injected.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const REMINDER_CONTENT = `
|
|
9
|
+
## Self-Improvement Reminder
|
|
10
|
+
|
|
11
|
+
After completing tasks, evaluate if any learnings should be captured:
|
|
12
|
+
|
|
13
|
+
**Log when:**
|
|
14
|
+
- User corrects you → \`.learnings/LEARNINGS.md\`
|
|
15
|
+
- Command/operation fails → \`.learnings/ERRORS.md\`
|
|
16
|
+
- User wants missing capability → \`.learnings/FEATURE_REQUESTS.md\`
|
|
17
|
+
- You discover your knowledge was wrong → \`.learnings/LEARNINGS.md\`
|
|
18
|
+
- You find a better approach → \`.learnings/LEARNINGS.md\`
|
|
19
|
+
|
|
20
|
+
**Promote when pattern is proven:**
|
|
21
|
+
- Behavioral patterns → \`SOUL.md\`
|
|
22
|
+
- Workflow improvements → \`AGENTS.md\`
|
|
23
|
+
- Tool gotchas → \`TOOLS.md\`
|
|
24
|
+
|
|
25
|
+
Keep entries simple: date, title, what happened, what to do differently.
|
|
26
|
+
`.trim();
|
|
27
|
+
|
|
28
|
+
const handler = async (event) => {
|
|
29
|
+
// Safety checks for event structure
|
|
30
|
+
if (!event || typeof event !== 'object') {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Only handle agent:bootstrap events
|
|
35
|
+
if (event.type !== 'agent' || event.action !== 'bootstrap') {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Safety check for context
|
|
40
|
+
if (!event.context || typeof event.context !== 'object') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Inject the reminder as a virtual bootstrap file
|
|
45
|
+
// Check that bootstrapFiles is an array before pushing
|
|
46
|
+
if (Array.isArray(event.context.bootstrapFiles)) {
|
|
47
|
+
event.context.bootstrapFiles.push({
|
|
48
|
+
path: 'SELF_IMPROVEMENT_REMINDER.md',
|
|
49
|
+
content: REMINDER_CONTENT,
|
|
50
|
+
virtual: true,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
module.exports = handler;
|
|
56
|
+
module.exports.default = handler;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-Improvement Hook for OpenClaw
|
|
3
|
+
*
|
|
4
|
+
* Injects a reminder to evaluate learnings during agent bootstrap.
|
|
5
|
+
* Fires on agent:bootstrap event before workspace files are injected.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { HookHandler } from 'openclaw/hooks';
|
|
9
|
+
|
|
10
|
+
const REMINDER_CONTENT = `## Self-Improvement Reminder
|
|
11
|
+
|
|
12
|
+
After completing tasks, evaluate if any learnings should be captured:
|
|
13
|
+
|
|
14
|
+
**Log when:**
|
|
15
|
+
- User corrects you → \`.learnings/LEARNINGS.md\`
|
|
16
|
+
- Command/operation fails → \`.learnings/ERRORS.md\`
|
|
17
|
+
- User wants missing capability → \`.learnings/FEATURE_REQUESTS.md\`
|
|
18
|
+
- You discover your knowledge was wrong → \`.learnings/LEARNINGS.md\`
|
|
19
|
+
- You find a better approach → \`.learnings/LEARNINGS.md\`
|
|
20
|
+
|
|
21
|
+
**Promote when pattern is proven:**
|
|
22
|
+
- Behavioral patterns → \`SOUL.md\`
|
|
23
|
+
- Workflow improvements → \`AGENTS.md\`
|
|
24
|
+
- Tool gotchas → \`TOOLS.md\`
|
|
25
|
+
|
|
26
|
+
Keep entries simple: date, title, what happened, what to do differently.`;
|
|
27
|
+
|
|
28
|
+
const handler: HookHandler = async (event) => {
|
|
29
|
+
// Safety checks for event structure
|
|
30
|
+
if (!event || typeof event !== 'object') {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Only handle agent:bootstrap events
|
|
35
|
+
if (event.type !== 'agent' || event.action !== 'bootstrap') {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Safety check for context
|
|
40
|
+
if (!event.context || typeof event.context !== 'object') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Skip sub-agent sessions to avoid bootstrap issues
|
|
45
|
+
// Sub-agents have sessionKey patterns like "agent:main:subagent:..."
|
|
46
|
+
const sessionKey = event.sessionKey || '';
|
|
47
|
+
if (sessionKey.includes(':subagent:')) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Inject the reminder as a virtual bootstrap file
|
|
52
|
+
// Check that bootstrapFiles is an array before pushing
|
|
53
|
+
if (Array.isArray(event.context.bootstrapFiles)) {
|
|
54
|
+
event.context.bootstrapFiles.push({
|
|
55
|
+
path: 'SELF_IMPROVEMENT_REMINDER.md',
|
|
56
|
+
content: REMINDER_CONTENT,
|
|
57
|
+
virtual: true,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default handler;
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Entry Examples
|
|
2
|
+
|
|
3
|
+
Concrete examples of well-formatted entries with all fields.
|
|
4
|
+
|
|
5
|
+
## Learning: Correction
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
## [LRN-20250115-001] correction
|
|
9
|
+
|
|
10
|
+
**Logged**: 2025-01-15T10:30:00Z
|
|
11
|
+
**Priority**: high
|
|
12
|
+
**Status**: pending
|
|
13
|
+
**Area**: tests
|
|
14
|
+
|
|
15
|
+
### Summary
|
|
16
|
+
Incorrectly assumed pytest fixtures are scoped to function by default
|
|
17
|
+
|
|
18
|
+
### Details
|
|
19
|
+
When writing test fixtures, I assumed all fixtures were function-scoped.
|
|
20
|
+
User corrected that while function scope is the default, the codebase
|
|
21
|
+
convention uses module-scoped fixtures for database connections to
|
|
22
|
+
improve test performance.
|
|
23
|
+
|
|
24
|
+
### Suggested Action
|
|
25
|
+
When creating fixtures that involve expensive setup (DB, network),
|
|
26
|
+
check existing fixtures for scope patterns before defaulting to function scope.
|
|
27
|
+
|
|
28
|
+
### Metadata
|
|
29
|
+
- Source: user_feedback
|
|
30
|
+
- Related Files: tests/conftest.py
|
|
31
|
+
- Tags: pytest, testing, fixtures
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Learning: Knowledge Gap (Resolved)
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
## [LRN-20250115-002] knowledge_gap
|
|
40
|
+
|
|
41
|
+
**Logged**: 2025-01-15T14:22:00Z
|
|
42
|
+
**Priority**: medium
|
|
43
|
+
**Status**: resolved
|
|
44
|
+
**Area**: config
|
|
45
|
+
|
|
46
|
+
### Summary
|
|
47
|
+
Project uses pnpm not npm for package management
|
|
48
|
+
|
|
49
|
+
### Details
|
|
50
|
+
Attempted to run `npm install` but project uses pnpm workspaces.
|
|
51
|
+
Lock file is `pnpm-lock.yaml`, not `package-lock.json`.
|
|
52
|
+
|
|
53
|
+
### Suggested Action
|
|
54
|
+
Check for `pnpm-lock.yaml` or `pnpm-workspace.yaml` before assuming npm.
|
|
55
|
+
Use `pnpm install` for this project.
|
|
56
|
+
|
|
57
|
+
### Metadata
|
|
58
|
+
- Source: error
|
|
59
|
+
- Related Files: pnpm-lock.yaml, pnpm-workspace.yaml
|
|
60
|
+
- Tags: package-manager, pnpm, setup
|
|
61
|
+
|
|
62
|
+
### Resolution
|
|
63
|
+
- **Resolved**: 2025-01-15T14:30:00Z
|
|
64
|
+
- **Commit/PR**: N/A - knowledge update
|
|
65
|
+
- **Notes**: Added to CLAUDE.md for future reference
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Learning: Promoted to CLAUDE.md
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
## [LRN-20250115-003] best_practice
|
|
74
|
+
|
|
75
|
+
**Logged**: 2025-01-15T16:00:00Z
|
|
76
|
+
**Priority**: high
|
|
77
|
+
**Status**: promoted
|
|
78
|
+
**Promoted**: CLAUDE.md
|
|
79
|
+
**Area**: backend
|
|
80
|
+
|
|
81
|
+
### Summary
|
|
82
|
+
API responses must include correlation ID from request headers
|
|
83
|
+
|
|
84
|
+
### Details
|
|
85
|
+
All API responses should echo back the X-Correlation-ID header from
|
|
86
|
+
the request. This is required for distributed tracing. Responses
|
|
87
|
+
without this header break the observability pipeline.
|
|
88
|
+
|
|
89
|
+
### Suggested Action
|
|
90
|
+
Always include correlation ID passthrough in API handlers.
|
|
91
|
+
|
|
92
|
+
### Metadata
|
|
93
|
+
- Source: user_feedback
|
|
94
|
+
- Related Files: src/middleware/correlation.ts
|
|
95
|
+
- Tags: api, observability, tracing
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Learning: Promoted to AGENTS.md
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## [LRN-20250116-001] best_practice
|
|
104
|
+
|
|
105
|
+
**Logged**: 2025-01-16T09:00:00Z
|
|
106
|
+
**Priority**: high
|
|
107
|
+
**Status**: promoted
|
|
108
|
+
**Promoted**: AGENTS.md
|
|
109
|
+
**Area**: backend
|
|
110
|
+
|
|
111
|
+
### Summary
|
|
112
|
+
Must regenerate API client after OpenAPI spec changes
|
|
113
|
+
|
|
114
|
+
### Details
|
|
115
|
+
When modifying API endpoints, the TypeScript client must be regenerated.
|
|
116
|
+
Forgetting this causes type mismatches that only appear at runtime.
|
|
117
|
+
The generate script also runs validation.
|
|
118
|
+
|
|
119
|
+
### Suggested Action
|
|
120
|
+
Add to agent workflow: after any API changes, run `pnpm run generate:api`.
|
|
121
|
+
|
|
122
|
+
### Metadata
|
|
123
|
+
- Source: error
|
|
124
|
+
- Related Files: openapi.yaml, src/client/api.ts
|
|
125
|
+
- Tags: api, codegen, typescript
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Error Entry
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## [ERR-20250115-A3F] docker_build
|
|
134
|
+
|
|
135
|
+
**Logged**: 2025-01-15T09:15:00Z
|
|
136
|
+
**Priority**: high
|
|
137
|
+
**Status**: pending
|
|
138
|
+
**Area**: infra
|
|
139
|
+
|
|
140
|
+
### Summary
|
|
141
|
+
Docker build fails on M1 Mac due to platform mismatch
|
|
142
|
+
|
|
143
|
+
### Error
|
|
144
|
+
```
|
|
145
|
+
error: failed to solve: python:3.11-slim: no match for platform linux/arm64
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Context
|
|
149
|
+
- Command: `docker build -t myapp .`
|
|
150
|
+
- Dockerfile uses `FROM python:3.11-slim`
|
|
151
|
+
- Running on Apple Silicon (M1/M2)
|
|
152
|
+
|
|
153
|
+
### Suggested Fix
|
|
154
|
+
Add platform flag: `docker build --platform linux/amd64 -t myapp .`
|
|
155
|
+
Or update Dockerfile: `FROM --platform=linux/amd64 python:3.11-slim`
|
|
156
|
+
|
|
157
|
+
### Metadata
|
|
158
|
+
- Reproducible: yes
|
|
159
|
+
- Related Files: Dockerfile
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Error Entry: Recurring Issue
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
## [ERR-20250120-B2C] api_timeout
|
|
168
|
+
|
|
169
|
+
**Logged**: 2025-01-20T11:30:00Z
|
|
170
|
+
**Priority**: critical
|
|
171
|
+
**Status**: pending
|
|
172
|
+
**Area**: backend
|
|
173
|
+
|
|
174
|
+
### Summary
|
|
175
|
+
Third-party payment API timeout during checkout
|
|
176
|
+
|
|
177
|
+
### Error
|
|
178
|
+
```
|
|
179
|
+
TimeoutError: Request to payments.example.com timed out after 30000ms
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Context
|
|
183
|
+
- Command: POST /api/checkout
|
|
184
|
+
- Timeout set to 30s
|
|
185
|
+
- Occurs during peak hours (lunch, evening)
|
|
186
|
+
|
|
187
|
+
### Suggested Fix
|
|
188
|
+
Implement retry with exponential backoff. Consider circuit breaker pattern.
|
|
189
|
+
|
|
190
|
+
### Metadata
|
|
191
|
+
- Reproducible: yes (during peak hours)
|
|
192
|
+
- Related Files: src/services/payment.ts
|
|
193
|
+
- See Also: ERR-20250115-X1Y, ERR-20250118-Z3W
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Feature Request
|
|
199
|
+
|
|
200
|
+
```markdown
|
|
201
|
+
## [FEAT-20250115-001] export_to_csv
|
|
202
|
+
|
|
203
|
+
**Logged**: 2025-01-15T16:45:00Z
|
|
204
|
+
**Priority**: medium
|
|
205
|
+
**Status**: pending
|
|
206
|
+
**Area**: backend
|
|
207
|
+
|
|
208
|
+
### Requested Capability
|
|
209
|
+
Export analysis results to CSV format
|
|
210
|
+
|
|
211
|
+
### User Context
|
|
212
|
+
User runs weekly reports and needs to share results with non-technical
|
|
213
|
+
stakeholders in Excel. Currently copies output manually.
|
|
214
|
+
|
|
215
|
+
### Complexity Estimate
|
|
216
|
+
simple
|
|
217
|
+
|
|
218
|
+
### Suggested Implementation
|
|
219
|
+
Add `--output csv` flag to the analyze command. Use standard csv module.
|
|
220
|
+
Could extend existing `--output json` pattern.
|
|
221
|
+
|
|
222
|
+
### Metadata
|
|
223
|
+
- Frequency: recurring
|
|
224
|
+
- Related Features: analyze command, json output
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Feature Request: Resolved
|
|
230
|
+
|
|
231
|
+
```markdown
|
|
232
|
+
## [FEAT-20250110-002] dark_mode
|
|
233
|
+
|
|
234
|
+
**Logged**: 2025-01-10T14:00:00Z
|
|
235
|
+
**Priority**: low
|
|
236
|
+
**Status**: resolved
|
|
237
|
+
**Area**: frontend
|
|
238
|
+
|
|
239
|
+
### Requested Capability
|
|
240
|
+
Dark mode support for the dashboard
|
|
241
|
+
|
|
242
|
+
### User Context
|
|
243
|
+
User works late hours and finds the bright interface straining.
|
|
244
|
+
Several other users have mentioned this informally.
|
|
245
|
+
|
|
246
|
+
### Complexity Estimate
|
|
247
|
+
medium
|
|
248
|
+
|
|
249
|
+
### Suggested Implementation
|
|
250
|
+
Use CSS variables for colors. Add toggle in user settings.
|
|
251
|
+
Consider system preference detection.
|
|
252
|
+
|
|
253
|
+
### Metadata
|
|
254
|
+
- Frequency: recurring
|
|
255
|
+
- Related Features: user settings, theme system
|
|
256
|
+
|
|
257
|
+
### Resolution
|
|
258
|
+
- **Resolved**: 2025-01-18T16:00:00Z
|
|
259
|
+
- **Commit/PR**: #142
|
|
260
|
+
- **Notes**: Implemented with system preference detection and manual toggle
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Learning: Promoted to Skill
|
|
266
|
+
|
|
267
|
+
```markdown
|
|
268
|
+
## [LRN-20250118-001] best_practice
|
|
269
|
+
|
|
270
|
+
**Logged**: 2025-01-18T11:00:00Z
|
|
271
|
+
**Priority**: high
|
|
272
|
+
**Status**: promoted_to_skill
|
|
273
|
+
**Skill-Path**: skills/docker-m1-fixes
|
|
274
|
+
**Area**: infra
|
|
275
|
+
|
|
276
|
+
### Summary
|
|
277
|
+
Docker build fails on Apple Silicon due to platform mismatch
|
|
278
|
+
|
|
279
|
+
### Details
|
|
280
|
+
When building Docker images on M1/M2 Macs, the build fails because
|
|
281
|
+
the base image doesn't have an ARM64 variant. This is a common issue
|
|
282
|
+
that affects many developers.
|
|
283
|
+
|
|
284
|
+
### Suggested Action
|
|
285
|
+
Add `--platform linux/amd64` to docker build command, or use
|
|
286
|
+
`FROM --platform=linux/amd64` in Dockerfile.
|
|
287
|
+
|
|
288
|
+
### Metadata
|
|
289
|
+
- Source: error
|
|
290
|
+
- Related Files: Dockerfile
|
|
291
|
+
- Tags: docker, arm64, m1, apple-silicon
|
|
292
|
+
- See Also: ERR-20250115-A3F, ERR-20250117-B2D
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Extracted Skill Example
|
|
298
|
+
|
|
299
|
+
When the above learning is extracted as a skill, it becomes:
|
|
300
|
+
|
|
301
|
+
**File**: `skills/docker-m1-fixes/SKILL.md`
|
|
302
|
+
|
|
303
|
+
```markdown
|
|
304
|
+
---
|
|
305
|
+
name: docker-m1-fixes
|
|
306
|
+
description: "Fixes Docker build failures on Apple Silicon (M1/M2). Use when docker build fails with platform mismatch errors."
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
# Docker M1 Fixes
|
|
310
|
+
|
|
311
|
+
Solutions for Docker build issues on Apple Silicon Macs.
|
|
312
|
+
|
|
313
|
+
## Quick Reference
|
|
314
|
+
|
|
315
|
+
| Error | Fix |
|
|
316
|
+
|-------|-----|
|
|
317
|
+
| `no match for platform linux/arm64` | Add `--platform linux/amd64` to build |
|
|
318
|
+
| Image runs but crashes | Use emulation or find ARM-compatible base |
|
|
319
|
+
|
|
320
|
+
## The Problem
|
|
321
|
+
|
|
322
|
+
Many Docker base images don't have ARM64 variants. When building on
|
|
323
|
+
Apple Silicon (M1/M2/M3), Docker attempts to pull ARM64 images by
|
|
324
|
+
default, causing platform mismatch errors.
|
|
325
|
+
|
|
326
|
+
## Solutions
|
|
327
|
+
|
|
328
|
+
### Option 1: Build Flag (Recommended)
|
|
329
|
+
|
|
330
|
+
Add platform flag to your build command:
|
|
331
|
+
|
|
332
|
+
\`\`\`bash
|
|
333
|
+
docker build --platform linux/amd64 -t myapp .
|
|
334
|
+
\`\`\`
|
|
335
|
+
|
|
336
|
+
### Option 2: Dockerfile Modification
|
|
337
|
+
|
|
338
|
+
Specify platform in the FROM instruction:
|
|
339
|
+
|
|
340
|
+
\`\`\`dockerfile
|
|
341
|
+
FROM --platform=linux/amd64 python:3.11-slim
|
|
342
|
+
\`\`\`
|
|
343
|
+
|
|
344
|
+
### Option 3: Docker Compose
|
|
345
|
+
|
|
346
|
+
Add platform to your service:
|
|
347
|
+
|
|
348
|
+
\`\`\`yaml
|
|
349
|
+
services:
|
|
350
|
+
app:
|
|
351
|
+
platform: linux/amd64
|
|
352
|
+
build: .
|
|
353
|
+
\`\`\`
|
|
354
|
+
|
|
355
|
+
## Trade-offs
|
|
356
|
+
|
|
357
|
+
| Approach | Pros | Cons |
|
|
358
|
+
|----------|------|------|
|
|
359
|
+
| Build flag | No file changes | Must remember flag |
|
|
360
|
+
| Dockerfile | Explicit, versioned | Affects all builds |
|
|
361
|
+
| Compose | Convenient for dev | Requires compose |
|
|
362
|
+
|
|
363
|
+
## Performance Note
|
|
364
|
+
|
|
365
|
+
Running AMD64 images on ARM64 uses Rosetta 2 emulation. This works
|
|
366
|
+
for development but may be slower. For production, find ARM-native
|
|
367
|
+
alternatives when possible.
|
|
368
|
+
|
|
369
|
+
## Source
|
|
370
|
+
|
|
371
|
+
- Learning ID: LRN-20250118-001
|
|
372
|
+
- Category: best_practice
|
|
373
|
+
- Extraction Date: 2025-01-18
|
|
374
|
+
```
|