@fro.bot/systematic 1.14.0 → 1.15.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.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/skills/agent-browser/SKILL.md +1 -0
  3. package/skills/agent-native-architecture/SKILL.md +4 -4
  4. package/skills/agent-native-architecture/references/files-universal-interface.md +1 -1
  5. package/skills/agent-native-architecture/references/product-implications.md +1 -1
  6. package/skills/brainstorming/SKILL.md +1 -0
  7. package/skills/compound-docs/SKILL.md +14 -13
  8. package/skills/compound-docs/assets/critical-pattern-template.md +1 -1
  9. package/skills/compound-docs/assets/resolution-template.md +3 -3
  10. package/skills/compound-docs/references/yaml-schema.md +2 -2
  11. package/skills/create-agent-skills/SKILL.md +169 -192
  12. package/skills/create-agent-skills/references/api-security.md +24 -24
  13. package/skills/create-agent-skills/references/executable-code.md +1 -1
  14. package/skills/create-agent-skills/references/official-spec.md +74 -125
  15. package/skills/create-agent-skills/references/skill-structure.md +109 -329
  16. package/skills/create-agent-skills/workflows/add-reference.md +3 -3
  17. package/skills/create-agent-skills/workflows/add-script.md +2 -2
  18. package/skills/create-agent-skills/workflows/add-template.md +1 -1
  19. package/skills/create-agent-skills/workflows/add-workflow.md +5 -5
  20. package/skills/create-agent-skills/workflows/audit-skill.md +6 -6
  21. package/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +8 -8
  22. package/skills/create-agent-skills/workflows/create-new-skill.md +8 -8
  23. package/skills/create-agent-skills/workflows/upgrade-to-router.md +5 -5
  24. package/skills/create-agent-skills/workflows/verify-skill.md +4 -4
  25. package/skills/document-review/SKILL.md +88 -0
  26. package/skills/file-todos/SKILL.md +3 -2
  27. package/skills/file-todos/assets/todo-template.md +1 -1
  28. package/skills/frontend-design/SKILL.md +43 -0
  29. package/skills/git-worktree/SKILL.md +23 -22
  30. package/skills/git-worktree/scripts/worktree-manager.sh +2 -10
  31. package/skills/orchestrating-swarms/SKILL.md +1718 -0
@@ -14,23 +14,23 @@ When Claude executes this, the full command with expanded `$API_KEY` appears in
14
14
  </the_problem>
15
15
 
16
16
  <the_solution>
17
- Use `~/.claude/scripts/secure-api.sh` - a wrapper that loads credentials internally.
17
+ Use `~/.config/opencode/scripts/secure-api.sh` - a wrapper that loads credentials internally.
18
18
 
19
19
  <for_supported_services>
20
20
  ```bash
21
21
  # ✅ GOOD - No credentials visible
22
- ~/.claude/scripts/secure-api.sh <service> <operation> [args]
22
+ ~/.config/opencode/scripts/secure-api.sh <service> <operation> [args]
23
23
 
24
24
  # Examples:
25
- ~/.claude/scripts/secure-api.sh facebook list-campaigns
26
- ~/.claude/scripts/secure-api.sh ghl search-contact "email@example.com"
25
+ ~/.config/opencode/scripts/secure-api.sh facebook list-campaigns
26
+ ~/.config/opencode/scripts/secure-api.sh ghl search-contact "email@example.com"
27
27
  ```
28
28
  </for_supported_services>
29
29
 
30
30
  <adding_new_services>
31
31
  When building a new skill that requires API calls:
32
32
 
33
- 1. **Add operations to the wrapper** (`~/.claude/scripts/secure-api.sh`):
33
+ 1. **Add operations to the wrapper** (`~/.config/opencode/scripts/secure-api.sh`):
34
34
 
35
35
  ```bash
36
36
  case "$SERVICE" in
@@ -67,14 +67,14 @@ yourservice)
67
67
  ;;
68
68
  ```
69
69
 
70
- 3. **Add credential placeholders to `~/.claude/.env`** using profile naming:
70
+ 3. **Add credential placeholders to `~/.config/opencode/.env`** using profile naming:
71
71
 
72
72
  ```bash
73
73
  # Check if entries already exist
74
- grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.claude/.env 2>/dev/null || \
75
- echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.claude/.env
74
+ grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.config/opencode/.env 2>/dev/null || \
75
+ echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.config/opencode/.env
76
76
 
77
- echo "Added credential placeholders to ~/.claude/.env - user needs to fill them in"
77
+ echo "Added credential placeholders to ~/.config/opencode/.env - user needs to fill them in"
78
78
  ```
79
79
 
80
80
  4. **Document profile workflow in your SKILL.md**:
@@ -88,12 +88,12 @@ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them
88
88
 
89
89
  1. **Check for saved profile:**
90
90
  ```bash
91
- ~/.claude/scripts/profile-state get yourservice
91
+ ~/.config/opencode/scripts/profile-state get yourservice
92
92
  ```
93
93
 
94
94
  2. **If no profile saved, discover available profiles:**
95
95
  ```bash
96
- ~/.claude/scripts/list-profiles yourservice
96
+ ~/.config/opencode/scripts/list-profiles yourservice
97
97
  ```
98
98
 
99
99
  3. **If only ONE profile:** Use it automatically and announce:
@@ -108,7 +108,7 @@ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them
108
108
 
109
109
  5. **Save user's selection:**
110
110
  ```bash
111
- ~/.claude/scripts/profile-state set yourservice <selected_profile>
111
+ ~/.config/opencode/scripts/profile-state set yourservice <selected_profile>
112
112
  ```
113
113
 
114
114
  6. **Always announce which profile before calling API:**
@@ -118,7 +118,7 @@ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them
118
118
 
119
119
  7. **Make API call with profile:**
120
120
  ```bash
121
- ~/.claude/scripts/secure-api.sh yourservice:<profile> list-items
121
+ ~/.config/opencode/scripts/secure-api.sh yourservice:<profile> list-items
122
122
  ```
123
123
 
124
124
  ## Secure API Calls
@@ -126,11 +126,11 @@ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them
126
126
  All API calls use profile syntax:
127
127
 
128
128
  ```bash
129
- ~/.claude/scripts/secure-api.sh yourservice:<profile> <operation> [args]
129
+ ~/.config/opencode/scripts/secure-api.sh yourservice:<profile> <operation> [args]
130
130
 
131
131
  # Examples:
132
- ~/.claude/scripts/secure-api.sh yourservice:main list-items
133
- ~/.claude/scripts/secure-api.sh yourservice:main get-item <ITEM_ID>
132
+ ~/.config/opencode/scripts/secure-api.sh yourservice:main list-items
133
+ ~/.config/opencode/scripts/secure-api.sh yourservice:main get-item <ITEM_ID>
134
134
  ```
135
135
 
136
136
  **Profile persists for session:** Once selected, use same profile for subsequent operations unless user explicitly changes it.
@@ -159,7 +159,7 @@ curl -s -X POST \
159
159
 
160
160
  Usage:
161
161
  ```bash
162
- echo '{"name":"value"}' | ~/.claude/scripts/secure-api.sh service create-item
162
+ echo '{"name":"value"}' | ~/.config/opencode/scripts/secure-api.sh service create-item
163
163
  ```
164
164
  </post_with_json_body>
165
165
 
@@ -175,7 +175,7 @@ curl -s -X POST \
175
175
  </pattern_guidelines>
176
176
 
177
177
  <credential_storage>
178
- **Location:** `~/.claude/.env` (global for all skills, accessible from any directory)
178
+ **Location:** `~/.config/opencode/.env` (global for all skills, accessible from any directory)
179
179
 
180
180
  **Format:**
181
181
  ```bash
@@ -191,7 +191,7 @@ OTHER_BASE_URL=https://api.other.com
191
191
  **Loading in script:**
192
192
  ```bash
193
193
  set -a
194
- source ~/.claude/.env 2>/dev/null || { echo "Error: ~/.claude/.env not found" >&2; exit 1; }
194
+ source ~/.config/opencode/.env 2>/dev/null || { echo "Error: ~/.config/opencode/.env not found" >&2; exit 1; }
195
195
  set +a
196
196
  ```
197
197
  </credential_storage>
@@ -199,8 +199,8 @@ set +a
199
199
  <best_practices>
200
200
  1. **Never use raw curl with `$VARIABLE` in skill examples** - always use the wrapper
201
201
  2. **Add all operations to the wrapper** - don't make users figure out curl syntax
202
- 3. **Auto-create credential placeholders** - add empty fields to `~/.claude/.env` immediately when creating the skill
203
- 4. **Keep credentials in `~/.claude/.env`** - one central location, works everywhere
202
+ 3. **Auto-create credential placeholders** - add empty fields to `~/.config/opencode/.env` immediately when creating the skill
203
+ 4. **Keep credentials in `~/.config/opencode/.env`** - one central location, works everywhere
204
204
  5. **Document each operation** - show examples in SKILL.md
205
205
  6. **Handle errors gracefully** - check for missing env vars, show helpful error messages
206
206
  </best_practices>
@@ -210,7 +210,7 @@ Test the wrapper without exposing credentials:
210
210
 
211
211
  ```bash
212
212
  # This command appears in chat
213
- ~/.claude/scripts/secure-api.sh facebook list-campaigns
213
+ ~/.config/opencode/scripts/secure-api.sh facebook list-campaigns
214
214
 
215
215
  # But API keys never appear - they're loaded inside the script
216
216
  ```
@@ -218,9 +218,9 @@ Test the wrapper without exposing credentials:
218
218
  Verify credentials are loaded:
219
219
  ```bash
220
220
  # Check .env exists
221
- ls -la ~/.claude/.env
221
+ ls -la ~/.config/opencode/.env
222
222
 
223
223
  # Check specific variables (without showing values)
224
- grep -q "YOUR_API_KEY=" ~/.claude/.env && echo "API key configured" || echo "API key missing"
224
+ grep -q "YOUR_API_KEY=" ~/.config/opencode/.env && echo "API key configured" || echo "API key missing"
225
225
  ```
226
226
  </testing>
@@ -45,7 +45,7 @@ skill-name/
45
45
  **Reference pattern**: In SKILL.md, reference scripts using the `scripts/` path:
46
46
 
47
47
  ```bash
48
- python ~/.claude/skills/skill-name/scripts/analyze.py input.har
48
+ python ~/.config/opencode/skills/skill-name/scripts/analyze.py input.har
49
49
  ```
50
50
  </scripts_directory>
51
51
  </file_organization>
@@ -1,36 +1,56 @@
1
- # Anthropic Official Skill Specification
1
+ # Official Skill Specification (2026)
2
2
 
3
3
  Source: [code.claude.com/docs/en/skills](https://code.claude.com/docs/en/skills)
4
4
 
5
- ## SKILL.md File Structure
5
+ ## Commands and Skills Are Merged
6
+
7
+ Custom slash commands have been merged into skills. A file at `.opencode/commands/review.md` and a skill at `.opencode/skills/review/SKILL.md` both create `/review` and work the same way. Existing `.opencode/commands/` files keep working. Skills add optional features: a directory for supporting files, frontmatter to control invocation, and automatic context loading.
6
8
 
7
- Every Skill requires a `SKILL.md` file with YAML frontmatter followed by Markdown instructions.
9
+ If a skill and a command share the same name, the skill takes precedence.
10
+
11
+ ## SKILL.md File Structure
8
12
 
9
- ### Basic Format
13
+ Every skill requires a `SKILL.md` file with YAML frontmatter followed by standard markdown instructions.
10
14
 
11
15
  ```markdown
12
16
  ---
13
17
  name: your-skill-name
14
- description: Brief description of what this Skill does and when to use it
18
+ description: What it does and when to use it
15
19
  ---
16
20
 
17
21
  # Your Skill Name
18
22
 
19
23
  ## Instructions
20
- Provide clear, step-by-step guidance for Claude.
24
+ Clear, step-by-step guidance.
21
25
 
22
26
  ## Examples
23
- Show concrete examples of using this Skill.
27
+ Concrete examples of using this skill.
24
28
  ```
25
29
 
26
- ## Required Frontmatter Fields
30
+ ## Complete Frontmatter Reference
31
+
32
+ All fields are optional. Only `description` is recommended.
27
33
 
28
34
  | Field | Required | Description |
29
35
  |-------|----------|-------------|
30
- | `name` | Yes | Skill name using lowercase letters, numbers, and hyphens only (max 64 characters). Should match the directory name. |
31
- | `description` | Yes | What the Skill does and when to use it (max 1024 characters). Claude uses this to decide when to apply the Skill. |
32
- | `allowed-tools` | No | Tools Claude can use without asking permission when this Skill is active. Example: `Read, Grep, Glob` |
33
- | `model` | No | Specific model to use when this Skill is active (e.g., `claude-sonnet-4-20250514`). Defaults to the conversation's model. |
36
+ | `name` | No | Display name. Lowercase letters, numbers, hyphens only (max 64 chars). Defaults to directory name if omitted. |
37
+ | `description` | Recommended | What it does AND when to use it (max 1024 chars). Claude uses this to decide when to apply the skill. |
38
+ | `argument-hint` | No | Hint shown during autocomplete. Example: `[issue-number]` or `[filename] [format]` |
39
+ | `disable-model-invocation` | No | Set `true` to prevent Claude from auto-loading. Use for manual workflows. Default: `false` |
40
+ | `user-invocable` | No | Set `false` to hide from `/` menu. Use for background knowledge. Default: `true` |
41
+ | `allowed-tools` | No | Tools Claude can use without permission prompts. Example: `Read, Bash(git *)` |
42
+ | `model` | No | Model to use: `haiku`, `sonnet`, or `opus` |
43
+ | `context` | No | Set `fork` to run in isolated subagent context |
44
+ | `agent` | No | Subagent type when `context: fork`. Options: `Explore`, `Plan`, `general-purpose`, or custom agent name |
45
+ | `hooks` | No | Hooks scoped to this skill's lifecycle |
46
+
47
+ ## Invocation Control
48
+
49
+ | Frontmatter | User can invoke | Claude can invoke | When loaded into context |
50
+ |-------------|----------------|-------------------|--------------------------|
51
+ | (default) | Yes | Yes | Description always in context, full skill loads when invoked |
52
+ | `disable-model-invocation: true` | Yes | No | Description not in context, full skill loads when you invoke |
53
+ | `user-invocable: false` | No | Yes | Description always in context, full skill loads when invoked |
34
54
 
35
55
  ## Skill Locations & Priority
36
56
 
@@ -40,146 +60,75 @@ Enterprise (highest priority) → Personal → Project → Plugin (lowest priori
40
60
 
41
61
  | Type | Path | Applies to |
42
62
  |------|------|-----------|
43
- | **Enterprise** | See managed settings | All users in organization |
44
- | **Personal** | `~/.claude/skills/` | You, across all projects |
45
- | **Project** | `.claude/skills/` | Anyone working in repository |
46
- | **Plugin** | Bundled with plugins | Anyone with plugin installed |
63
+ | Enterprise | See managed settings | All users in organization |
64
+ | Personal | `~/.config/opencode/skills/<name>/SKILL.md` | You, across all projects |
65
+ | Project | `.opencode/skills/<name>/SKILL.md` | Anyone working in repository |
66
+ | Plugin | `<plugin>/skills/<name>/SKILL.md` | Where plugin is enabled |
67
+
68
+ Plugin skills use a `plugin-name:skill-name` namespace, so they cannot conflict with other levels.
47
69
 
48
70
  ## How Skills Work
49
71
 
50
- 1. **Discovery**: Claude loads only name and description at startup
51
- 2. **Activation**: When your request matches a Skill's description, Claude asks for confirmation
52
- 3. **Execution**: Claude follows the Skill's instructions and loads referenced files
72
+ 1. **Discovery**: Claude loads only name and description at startup (2% of context window budget)
73
+ 2. **Activation**: When your request matches a skill's description, Claude loads the full content
74
+ 3. **Execution**: Claude follows the skill's instructions
53
75
 
54
- **Key Principle**: Skills are **model-invoked** — Claude automatically decides which Skills to use based on your request.
76
+ ## String Substitutions
55
77
 
56
- ## Progressive Disclosure Pattern
78
+ | Variable | Description |
79
+ |----------|-------------|
80
+ | `$ARGUMENTS` | All arguments passed when invoking |
81
+ | `$ARGUMENTS[N]` | Specific argument by 0-based index |
82
+ | `$N` | Shorthand for `$ARGUMENTS[N]` |
83
+ | `${CLAUDE_SESSION_ID}` | Current session ID |
57
84
 
58
- Keep `SKILL.md` under 500 lines by linking to supporting files:
85
+ ## Dynamic Context Injection
59
86
 
60
- ```
61
- my-skill/
62
- ├── SKILL.md (required - overview and navigation)
63
- ├── reference.md (detailed API docs - loaded when needed)
64
- ├── examples.md (usage examples - loaded when needed)
65
- └── scripts/
66
- └── helper.py (utility script - executed, not loaded)
67
- ```
68
-
69
- ### Example SKILL.md with References
87
+ The `` !`command` `` syntax runs shell commands before content is sent to Claude:
70
88
 
71
89
  ```markdown
72
- ---
73
- name: pdf-processing
74
- description: Extract text, fill forms, merge PDFs. Use when working with PDF files, forms, or document extraction. Requires pypdf and pdfplumber packages.
75
- allowed-tools: Read, Bash(python:*)
76
- ---
77
-
78
- # PDF Processing
79
-
80
- ## Quick start
81
-
82
- Extract text:
83
- ```python
84
- import pdfplumber
85
- with pdfplumber.open("doc.pdf") as pdf:
86
- text = pdf.pages[0].extract_text()
90
+ ## Context
91
+ - Current branch: !`git branch --show-current`
92
+ - PR diff: !`gh pr diff`
87
93
  ```
88
94
 
89
- For form filling, see [FORMS.md](FORMS.md).
90
- For detailed API reference, see [REFERENCE.md](REFERENCE.md).
95
+ Commands execute immediately and their output replaces the placeholder. Claude only sees the final result.
91
96
 
92
- ## Requirements
97
+ ## Progressive Disclosure
93
98
 
94
- Packages must be installed:
95
- ```bash
96
- pip install pypdf pdfplumber
97
99
  ```
100
+ my-skill/
101
+ ├── SKILL.md # Entry point (required)
102
+ ├── reference.md # Detailed docs (loaded when needed)
103
+ ├── examples.md # Usage examples (loaded when needed)
104
+ └── scripts/
105
+ └── helper.py # Utility script (executed, not loaded)
98
106
  ```
99
107
 
100
- ## Restricting Tool Access
101
-
102
- ```yaml
103
- ---
104
- name: reading-files-safely
105
- description: Read files without making changes. Use when you need read-only file access.
106
- allowed-tools: Read, Grep, Glob
107
- ---
108
+ Keep SKILL.md under 500 lines. Link to supporting files:
109
+ ```markdown
110
+ For API details, see [reference.md](reference.md).
108
111
  ```
109
112
 
110
- Benefits:
111
- - Read-only Skills that shouldn't modify files
112
- - Limited scope for specific tasks
113
- - Security-sensitive workflows
114
-
115
- ## Writing Effective Descriptions
116
-
117
- The `description` field enables Skill discovery and should include both what the Skill does and when to use it.
113
+ ## Running in a Subagent
118
114
 
119
- **Always write in third person.** The description is injected into the system prompt.
120
-
121
- - **Good:** "Processes Excel files and generates reports"
122
- - **Avoid:** "I can help you process Excel files"
123
- - **Avoid:** "You can use this to process Excel files"
124
-
125
- **Be specific and include key terms:**
126
-
127
- ```yaml
128
- description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
129
- ```
130
-
131
- **Avoid vague descriptions:**
115
+ Add `context: fork` to run in isolation:
132
116
 
133
117
  ```yaml
134
- description: Helps with documents # Too vague!
135
- ```
136
-
137
- ## Complete Example: Commit Message Generator
138
-
139
- ```markdown
140
118
  ---
141
- name: generating-commit-messages
142
- description: Generates clear commit messages from git diffs. Use when writing commit messages or reviewing staged changes.
119
+ name: deep-research
120
+ description: Research a topic thoroughly
121
+ context: fork
122
+ agent: Explore
143
123
  ---
144
124
 
145
- # Generating Commit Messages
146
-
147
- ## Instructions
148
-
149
- 1. Run `git diff --staged` to see changes
150
- 2. I'll suggest a commit message with:
151
- - Summary under 50 characters
152
- - Detailed description
153
- - Affected components
154
-
155
- ## Best practices
156
-
157
- - Use present tense
158
- - Explain what and why, not how
125
+ Research $ARGUMENTS thoroughly...
159
126
  ```
160
127
 
161
- ## Complete Example: Code Explanation Skill
162
-
163
- ```markdown
164
- ---
165
- name: explaining-code
166
- description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"
167
- ---
168
-
169
- # Explaining Code
170
-
171
- When explaining code, always include:
172
-
173
- 1. **Start with an analogy**: Compare the code to something from everyday life
174
- 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships
175
- 3. **Walk through the code**: Explain step-by-step what happens
176
- 4. **Highlight a gotcha**: What's a common misconception?
177
-
178
- Keep explanations conversational. For complex concepts, use multiple analogies.
179
- ```
128
+ The skill content becomes the subagent's prompt. It won't have access to conversation history.
180
129
 
181
130
  ## Distribution
182
131
 
183
- - **Project Skills**: Commit `.claude/skills/` to version control
184
- - **Plugins**: Add `skills/` directory to plugin with Skill folders
132
+ - **Project skills**: Commit `.opencode/skills/` to version control
133
+ - **Plugins**: Add `skills/` directory to plugin
185
134
  - **Enterprise**: Deploy organization-wide through managed settings