@massa-ai/codex-plugin 1.27.0 → 1.30.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "massa-ai",
3
- "version": "1.27.0",
3
+ "version": "1.30.0",
4
4
  "description": "massa-ai — semantic code search, memory, and context compression for Codex",
5
5
  "author": {
6
6
  "name": "Luiz Massa",
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-sol"
5
5
  model_reasoning_effort = "high"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-luna"
5
5
  model_reasoning_effort = "high"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-sol"
5
5
  model_reasoning_effort = "xhigh"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-terra"
5
5
  model_reasoning_effort = "xhigh"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-sol"
5
5
  model_reasoning_effort = "high"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
@@ -1,9 +1,9 @@
1
1
  # massa-ai-owned
2
2
  name = "massa-ai-judge"
3
- description = "Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
3
+ description = "Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence."
4
4
  model = "gpt-5.6-sol"
5
5
  model_reasoning_effort = "high"
6
- sandbox_mode = "read-only"
6
+ sandbox_mode = "workspace-write"
7
7
  developer_instructions = """# Judge Agent Skill
8
8
 
9
9
  ## Mission
package/install.sh CHANGED
@@ -68,6 +68,38 @@ done
68
68
  source "$SCRIPT_DIR/../../scripts/banner.sh"
69
69
  massa_ai_banner
70
70
 
71
+ # ── Generated-bundle contract (T6, design Component 4 / UGB-05..07) ─────────
72
+ # Why: apps/*-plugin generated subtrees (skills/, agents/, agent-profiles/,
73
+ # hooks/massa-ai-hook, lib/opencode-config.cjs) are gitignored build
74
+ # output (UGB-01) — a repo checkout must regenerate them before this
75
+ # installer copies or registers anything; a published tarball ships them
76
+ # pre-generated and has no generator sources to run at all. Runs before
77
+ # any host-config mutation (before CODEX_DIR resolution below).
78
+ # Impacts: UGB-05 checkout generates, UGB-06 tarball skips, UGB-07 loud
79
+ # failure before mutation, UGB-08 (skip-env honored for harness runs).
80
+ # Test: apps/codex-plugin/__tests__/install.test.ts (skip-branch + loud-failure cases)
81
+ if [[ -f "$REPO_ROOT/scripts/generate-skill-artifacts.ts" ]]; then
82
+ if [[ "${MASSA_AI_SKIP_ARTIFACT_GENERATION:-0}" != "1" ]]; then
83
+ if ! command -v bun &>/dev/null; then
84
+ echo "Error: bun required to generate plugin bundles in a repo checkout (scripts/generate-*.ts)" >&2
85
+ exit 3
86
+ fi
87
+ bun "$REPO_ROOT/scripts/generate-skill-artifacts.ts"
88
+ bun "$REPO_ROOT/scripts/generate-subagent-artifacts.ts"
89
+ fi
90
+ fi
91
+ # Tarball installs (generator sources absent) skip the block above entirely
92
+ # and fall straight through to this sentinel, which every context must pass:
93
+ # the bundle this installer is about to copy/register has to actually exist.
94
+ if [[ ! -f "$SCRIPT_DIR/skills/massa-ai/SKILL.md" ]]; then
95
+ echo "Error: missing $SCRIPT_DIR/skills/massa-ai/SKILL.md — run 'bun run generate:artifacts' first" >&2
96
+ exit 1
97
+ fi
98
+ if [[ ! -d "$SCRIPT_DIR/agents" ]] || [[ -z "$(ls -A "$SCRIPT_DIR/agents" 2>/dev/null)" ]]; then
99
+ echo "Error: missing or empty $SCRIPT_DIR/agents — run 'bun run generate:artifacts' first" >&2
100
+ exit 1
101
+ fi
102
+
71
103
  # Resolve target base dir
72
104
  if [[ "$SCOPE" == "project" ]]; then
73
105
  CODEX_DIR="$(pwd)/.codex"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massa-ai/codex-plugin",
3
- "version": "1.27.0",
3
+ "version": "1.30.0",
4
4
  "description": "massa-ai plugin for Codex — semantic code search, memory, and context compression",
5
5
  "files": [
6
6
  "agents",
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: judge
3
- description: Read-only debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence.
3
+ description: Debate-panel evaluator for judge-with-debate. Score an artifact against the meta-judge's evaluation specification with quoted evidence, then defend or revise scores across up to 3 debate rounds until the panel reaches consensus. Writes only its own judge-N report file per dispatch. Never judges outside the specification, never revises without quoted evidence.
4
4
  license: MIT
5
5
  metadata:
6
6
  author: S1LV4, luizgmassa
7
- version: "1.1.0"
7
+ version: "1.2.0"
8
8
  model_tier: deep
9
- permission: read-only
9
+ permission: write
10
10
  ---
11
11
 
12
12
  # Judge Agent Skill
@@ -46,7 +46,7 @@ Before reading any massa-ai file:
46
46
  Never pass `workflowSessionId` in that field. Use `synapse_task_begin`/`synapse_task_end`
47
47
  for task envelopes and `synapse_prefetch` to warm the buffer on file open.
48
48
  - Prefer the shared v2 retrieval order; fall back gracefully if the massa-ai
49
- server or Synapse is unavailable. The full tool surface includes 52 tools
49
+ server or Synapse is unavailable. The full tool surface includes 54 tools
50
50
  (see `references/mcp-tools.md`): indexing, search, symbol graph
51
51
  (`trace_path`, `impact_analysis`, `get_architecture`), memory CRUD
52
52
  (`remember`, `recall`, `memory_update`, `memory_delete`), checkpoints
@@ -80,6 +80,8 @@ Before reading any massa-ai file:
80
80
  requirement meaning, scope boundaries, destructive/irreversible choices,
81
81
  contradictory evidence — ask the user rather than choose silently. Facts
82
82
  are looked up; decisions are asked.
83
+ - Before writing or changing implementation code, load
84
+ `references/coding-guidelines.md` if not already loaded.
83
85
  - Complete Evidence Gate before claiming done.
84
86
 
85
87
  Use internal references only when needed:
@@ -164,6 +166,9 @@ current context already contains it.
164
166
  | `commit` | draft or create safe Conventional Commits with Jira branch prefixes and audit report exclusions | `workflows/commit.md` |
165
167
  | `the-fool` | direct challenge, red-team, pre-mortem, evidence audit | `workflows/the-fool.md` |
166
168
  | `judge-with-debate` | standalone multi-judge debate evaluation of user-supplied artifacts | `workflows/judge-with-debate.md` |
169
+ | `pr-review` | review a hosted GitHub PR / GitLab MR and post findings via `gh`/`glab` | `workflows/pr-review.md` |
170
+ | `to-prd` | turn the current conversation into a PRD without a new interview | `workflows/to-prd.md` |
171
+ | `skill-architect` | design and build a new skill through structured conversation | `workflows/skill-architect.md` |
167
172
  | `furps-refinement` | FURPS+ refinement of a PRD and/or ADR before implementation, with The Fool pre-validation and DoR coverage | `workflows/refinement/furps-refinement.md` |
168
173
  | `general` | coding work with no more specific workflow | `workflows/general.md` |
169
174
 
@@ -176,8 +181,8 @@ match or no match is resolved deterministically without asking.
176
181
  Deterministic routing precedence, first match wins:
177
182
 
178
183
  1. **Explicit route:** user names a massa-ai workflow, report family, saved finding type, or asks for a direct challenge.
179
- 2. **Requested artifact:** ADR, RFC, TDD, Jira ticket, commit, session guide, audit report, implementation audit report, mobile Figma report, or FURPS refinement report.
180
- 3. **Target type:** broken behavior/error -> `debug`; saved audit finding -> matching `*-fix`; implementation scope review -> `implementation-audit`; Maestro E2E/device automation target -> `maestro`, `maestro-audit`, or child-only `maestro-fix` before generic tests workflows; security/privacy/auth finding -> security workflow; tests/flakes/coverage finding -> tests workflow; supplied Figma/screenshot mobile UI design -> `design`; mobile Figma compare/audit -> `mobile-figma-audit`; saved `MFM-*` findings -> `mobile-figma-fix`.
184
+ 2. **Requested artifact:** ADR, RFC, TDD, Jira ticket, commit, session guide, audit report, implementation audit report, mobile Figma report, FURPS refinement report, PRD synthesized from the current conversation -> `to-prd` (explicit request only; refining an existing PRD stays `furps-refinement`), or new SKILL.md / skill design -> `skill-architect`.
185
+ 3. **Target type:** broken behavior/error -> `debug`; hosted PR/MR reference (number or URL) to review with posted findings -> `pr-review` (local working diff stays with audit routes); saved audit finding -> matching `*-fix`; implementation scope review -> `implementation-audit`; Maestro E2E/device automation target -> `maestro`, `maestro-audit`, or child-only `maestro-fix` before generic tests workflows; security/privacy/auth finding -> security workflow; tests/flakes/coverage finding -> tests workflow; supplied Figma/screenshot mobile UI design -> `design`; mobile Figma compare/audit -> `mobile-figma-audit`; saved `MFM-*` findings -> `mobile-figma-fix`.
181
186
  4. **Primary verb:** create/add/implement -> `feature` unless the concrete target is new Maestro flow work, which routes to `maestro`; restructure without behavior change -> `refactor`; inspect/understand only -> `exploration`; record selected decision -> `adr`; compare open options -> `rfc`; design settled implementation -> `tdd`; refine/quality-check an existing PRD or ADR document (not implementation auditing) -> `furps-refinement`.
182
187
  5. **Risk domain escalation:** migrations, irreversible operations, auth/privacy, cross-service contracts, public compatibility, or work over 10 files routes to `spec-driven` unless the user explicitly requests a narrower workflow and accepts the containment.
183
188
  6. **General fallback:** use `general` only after a one-line General fallback preflight names the specialized workflow considered, rejected reason, and why fallback does not change verification or mutation behavior.
@@ -148,7 +148,7 @@ only, never a dispatch target.
148
148
 
149
149
  ## Capability Packet
150
150
 
151
- **This section is the sole canonical Capability Packet definition.** `references/subagent-design.md` and the root `skills/AGENTS.md` registry defer to or mirror this list; `scripts/__tests__/capability-packet-parity.test.ts` fails when the `skills/AGENTS.md` mirror diverges. Bespoke packets (judge panel, FURPS analyst, phase-batch worker) are declared specializations that map onto these fields in their own workflow files.
151
+ **This section is the sole canonical Capability Packet definition.** `references/subagent-design.md` mirrors this list and the root `skills/AGENTS.md` registry points here without restating it. Bespoke packets (judge panel, FURPS analyst, phase-batch worker) are declared specializations that map onto these fields in their own workflow files.
152
152
 
153
153
  **A subagent inherits nothing from the parent session** — no skills, no personas, no loaded references, no conversation history. Everything the subagent needs is named explicitly in the packet, including the exact reference file paths it must read itself.
154
154
 
@@ -0,0 +1,67 @@
1
+ # Coding Guidelines
2
+
3
+ Source: Karpathy Guidelines (Useful-Agent-Skills)
4
+
5
+ Behavioral guidelines to reduce common LLM coding mistakes. These principles bias toward caution over speed—for trivial tasks, use judgment.
6
+
7
+ ## 1. Think Before Coding
8
+
9
+ **Don't assume. Don't hide confusion. Surface tradeoffs.**
10
+
11
+ Before implementing:
12
+
13
+ - State assumptions explicitly. If uncertain, ask.
14
+ - If multiple interpretations exist, present them—don't pick silently.
15
+ - If a simpler approach exists, say so. Push back when warranted.
16
+ - If something is unclear, stop. Name what's confusing. Ask.
17
+ - Disagree honestly. If the user's approach seems wrong, say so—don't be sycophantic.
18
+
19
+ ## 2. Simplicity First
20
+
21
+ **Minimum code that solves the problem. Nothing speculative.**
22
+
23
+ - No features beyond what was asked.
24
+ - No abstractions for single-use code.
25
+ - No "flexibility" or "configurability" that wasn't requested.
26
+ - No error handling for impossible scenarios.
27
+ - If you write 200 lines and it could be 50, rewrite it.
28
+
29
+ Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
30
+
31
+ ## 3. Surgical Changes
32
+
33
+ **Touch only what you must. Clean up only your own mess.**
34
+
35
+ When editing existing code:
36
+
37
+ - Don't "improve" adjacent code, comments, or formatting.
38
+ - Don't refactor things that aren't broken.
39
+ - Match existing style, even if you'd do it differently.
40
+ - If you notice unrelated dead code, mention it—don't delete it.
41
+
42
+ When your changes create orphans:
43
+
44
+ - Remove imports/variables/functions that YOUR changes made unused.
45
+ - Don't remove pre-existing dead code unless asked.
46
+
47
+ **The test:** Every changed line should trace directly to the user's request.
48
+
49
+ ## 4. Goal-Driven Execution
50
+
51
+ **Define success criteria. Loop until verified.**
52
+
53
+ Transform tasks into verifiable goals:
54
+
55
+ - "Add validation" → "Write tests for invalid inputs, then make them pass"
56
+ - "Fix the bug" → "Write a test that reproduces it, then make it pass"
57
+ - "Refactor X" → "Ensure tests pass before and after"
58
+
59
+ For multi-step tasks, state a brief plan:
60
+
61
+ ```
62
+ 1. [Step] → verify: [check]
63
+ 2. [Step] → verify: [check]
64
+ 3. [Step] → verify: [check]
65
+ ```
66
+
67
+ Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
@@ -100,9 +100,9 @@ behavior through MCP declarations and non-destructive runtime probes.
100
100
  - Preferred: `bash scripts/install-agents.sh --agent <host>` — the single writer
101
101
  of host MCP config (Claude Code, Claude Desktop, Codex, Cursor, OpenCode).
102
102
  Plugin installers call it; nothing else writes an MCP entry.
103
- - OpenCode: local MCP package via `bunx @massa-ai/mcp-client`, or
104
- `@massa-ai/opencode-plugin` (which registers tools in-process, so
105
- `install-agents.sh` skips the MCP entry when that plugin is present).
103
+ - OpenCode: `@massa-ai/opencode-plugin` is hooks-only (AD-017) and delegates
104
+ MCP registration to `install-agents.sh --agent opencode` on every install,
105
+ same as every other host — no separate MCP step needed.
106
106
  - VS Code/Antigravity: `.vscode/mcp.json` or `./scripts/setup-vscode.sh`.
107
107
  - Docker: run the `mcp` service through `docker compose run --rm -i mcp`.
108
108
 
@@ -1,4 +1,4 @@
1
- # massa-ai Tool Contracts (52 Tools)
1
+ # massa-ai Tool Contracts (54 Tools)
2
2
 
3
3
  Load when exact MCP schemas, REST fallbacks, response modes, or
4
4
  polling rules are needed. Prefer the active tool declaration over copied
@@ -138,6 +138,8 @@ depends on exact content.
138
138
  |---|---|---|
139
139
  | `rename_project` | Rename a project identity transactionally | Req: `sourceProjectId`, `targetProjectId`. Default `dryRun=true`; apply with `dryRun=false` + `operationId` + `expectedPlanHash`. Administrative, not workflow-recurring. |
140
140
  | `merge_projects` | Merge one project identity into another | Req: `sourceProjectId`, `targetProjectId`. Same dryRun/planHash contract as `rename_project`. Administrative, not workflow-recurring. |
141
+ | `profile_list` | List shipped model profiles and each detected host's current profile + bundle version | No required args; optional `host` to scope to one. Offline — reads on-disk variant directories only, never the registry. |
142
+ | `profile_set` | Switch the installed massa-ai agents to a registry model profile | Req: `profile`. Optional `host` (default: every detected, supported host), `dryRun` (default `false`) to preview without writing. Local trust model — mutates installed agent files on the machine the MCP server runs on; a host session restart is required to take effect. |
141
143
 
142
144
  ## Retrieval Order
143
145
 
@@ -0,0 +1,256 @@
1
+ # Description & Instruction Examples
2
+
3
+ Reference for writing effective skill descriptions and instructions.
4
+ Read this during the Architecture phase (for descriptions) and Craft phase
5
+ (for instructions).
6
+
7
+ ---
8
+
9
+ ## Good Descriptions
10
+
11
+ Each example follows the pattern: [What] + [When/Triggers] + [Not-when].
12
+
13
+ ### Document & Asset Creation
14
+
15
+ ```yaml
16
+ description: Analyzes Figma design files and generates developer handoff documentation.
17
+ Use when user uploads .fig files, asks for "design specs", "component
18
+ documentation", or "design-to-code handoff". Do NOT use for general
19
+ design discussions or UI feedback.
20
+ ```
21
+
22
+ ```yaml
23
+ description: Creates distinctive, production-grade frontend interfaces with high design
24
+ quality. Use this skill when the user asks to build web components, pages,
25
+ artifacts, posters, or applications (examples include websites, landing
26
+ pages, dashboards, React components, HTML/CSS layouts, or when
27
+ styling/beautifying any web UI). Generates creative, polished code and UI
28
+ design that avoids generic AI aesthetics.
29
+ ```
30
+
31
+ ### Workflow Automation
32
+
33
+ ```yaml
34
+ description: Manages Linear project workflows including sprint planning, task creation,
35
+ and status tracking. Use when user mentions "sprint", "Linear tasks",
36
+ "project planning", or asks to "create tickets". Do NOT use for general
37
+ project management advice without Linear context.
38
+ ```
39
+
40
+ ```yaml
41
+ description: End-to-end customer onboarding workflow for PayFlow. Handles account
42
+ creation, payment setup, and subscription management. Use when user says
43
+ "onboard new customer", "set up subscription", or "create PayFlow account".
44
+ ```
45
+
46
+ ### MCP Enhancement
47
+
48
+ ```yaml
49
+ description: Automatically analyzes and fixes detected bugs in GitHub Pull Requests
50
+ using Sentry's error monitoring data via their MCP server. Use when user
51
+ mentions "Sentry errors", "fix bugs from monitoring", "PR review with
52
+ error data", or asks to analyze production errors in code.
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Bad Descriptions (and Why)
58
+
59
+ ```yaml
60
+ # ❌ Too vague — no trigger phrases, no specifics
61
+ description: Helps with projects.
62
+ # Why it fails: the agent can't determine WHEN to load this.
63
+ ```
64
+
65
+ ```yaml
66
+ # ❌ Missing triggers — describes capability but not activation
67
+ description: Creates sophisticated multi-page documentation systems.
68
+ # Why it fails: What would a user SAY to trigger this? "Create docs"?
69
+ # "Write documentation"? Include the actual phrases.
70
+ ```
71
+
72
+ ```yaml
73
+ # ❌ Too technical, no user perspective
74
+ description: Implements the Project entity model with hierarchical relationships.
75
+ # Why it fails: Users don't think in entity models. They think in tasks.
76
+ ```
77
+
78
+ ```yaml
79
+ # ❌ Too broad — will overtrigger
80
+ description: Processes documents.
81
+ # Why it fails: Loads for ANY document task. Add file types and specifics.
82
+ ```
83
+
84
+ ```yaml
85
+ # ❌ Overlap without boundaries
86
+ description: Analyzes data and creates visualizations.
87
+ # Why it fails: Conflicts with built-in capabilities and other skills.
88
+ # Add specifics about WHAT data and WHAT kind of visualizations.
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Fixing Overtriggering with Negative Triggers
94
+
95
+ ```yaml
96
+ # Before: triggers on all data tasks
97
+ description: Advanced data analysis for CSV files.
98
+
99
+ # After: scoped with negative triggers
100
+ description: Advanced data analysis for CSV files. Use for statistical modeling,
101
+ regression, clustering. Do NOT use for simple data exploration
102
+ (use data-viz skill instead) or for reading CSV files without analysis.
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Good Instructions
108
+
109
+ ### Specific and Actionable
110
+
111
+ ```markdown
112
+ # ✅ Good — tells the agent exactly what to do
113
+
114
+ Run `python scripts/[validate].py --input {filename}` to check data format.
115
+ If validation fails, common issues include:
116
+
117
+ - Missing required fields → add them to the CSV
118
+ - Invalid date formats → use YYYY-MM-DD
119
+ - Encoding errors → convert to UTF-8 first
120
+ ```
121
+
122
+ ```markdown
123
+ # ❌ Bad — vague and unactionable
124
+
125
+ Validate the data before proceeding.
126
+ ```
127
+
128
+ ### Error Handling
129
+
130
+ ```markdown
131
+ # ✅ Good — specific error, cause, solution
132
+
133
+ ## Common Issues
134
+
135
+ ### MCP Connection Failed
136
+
137
+ If you see "Connection refused":
138
+
139
+ 1. Verify MCP server is running: Check Settings > Extensions
140
+ 2. Confirm API key is valid
141
+ 3. Try reconnecting: Settings > Extensions > [Service] > Reconnect
142
+ ```
143
+
144
+ ```markdown
145
+ # ❌ Bad — no specifics
146
+
147
+ If something goes wrong, try again.
148
+ ```
149
+
150
+ ### Resource References
151
+
152
+ ```markdown
153
+ # ✅ Good — says WHEN and WHY to read the file
154
+
155
+ Before writing queries, consult `references/[api-patterns].md` for:
156
+
157
+ - Rate limiting guidance (if making >10 calls)
158
+ - Pagination patterns (if results may exceed 100 items)
159
+ - Error codes and handling (if calls may fail)
160
+ ```
161
+
162
+ ```markdown
163
+ # ❌ Bad — no guidance on when to read
164
+
165
+ See references/ for more information.
166
+ ```
167
+
168
+ ### Critical Instructions
169
+
170
+ ```markdown
171
+ # ✅ Good — prominent, specific, verifiable
172
+
173
+ CRITICAL: Before calling create_project, verify:
174
+
175
+ - Project name is non-empty
176
+ - At least one team member assigned
177
+ - Start date is not in the past
178
+ If any check fails, tell the user what's missing before proceeding.
179
+ ```
180
+
181
+ ```markdown
182
+ # ❌ Bad — buried, vague, not verifiable
183
+
184
+ Make sure to validate things properly.
185
+ ```
186
+
187
+ ### Examples in Skills
188
+
189
+ ```markdown
190
+ # ✅ Good — realistic user input with concrete output
191
+
192
+ ## Examples
193
+
194
+ ### Example 1: New sprint setup
195
+
196
+ User says: "Help me plan the Q4 sprint for the mobile team"
197
+ Actions:
198
+
199
+ 1. Fetch current backlog from Linear (MCP)
200
+ 2. Check team capacity (3 engineers, 2-week sprint)
201
+ 3. Prioritize by impact score
202
+ 4. Create 12 tasks with estimates
203
+ Result: Sprint board populated with 12 prioritized tasks, each with
204
+ story points and assignees. Summary posted to #mobile-team Slack.
205
+ ```
206
+
207
+ ```markdown
208
+ # ❌ Bad — generic, no concrete details
209
+
210
+ ### Example 1: Setup
211
+
212
+ User says: "Set up a project"
213
+ Result: Project gets created.
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Anti-Patterns Checklist
219
+
220
+ Before finalizing any skill, verify NONE of these are present:
221
+
222
+ ### Structural Anti-Patterns
223
+
224
+ - [ ] File named SKILL.MD, skill.md, or any variant (must be exactly SKILL.md)
225
+ - [ ] Folder has spaces or capitals (must be kebab-case)
226
+ - [ ] README.md exists inside the skill folder
227
+ - [ ] XML angle brackets (< >) in YAML frontmatter
228
+ - [ ] "claude" or "anthropic" in the skill name
229
+ - [ ] Missing --- delimiters around frontmatter
230
+ - [ ] SKILL.md exceeds 500 lines without progressive disclosure
231
+
232
+ ### Description Anti-Patterns
233
+
234
+ - [ ] No trigger phrases included
235
+ - [ ] Too vague (could match anything)
236
+ - [ ] Too technical (user perspective missing)
237
+ - [ ] No negative triggers when overlap risk exists
238
+ - [ ] Exceeds 1024 characters
239
+
240
+ ### Instruction Anti-Patterns
241
+
242
+ - [ ] Vague directions without specific actions
243
+ - [ ] Critical instructions buried in middle of document
244
+ - [ ] No examples of realistic usage
245
+ - [ ] No error handling guidance
246
+ - [ ] References to external files without load conditions
247
+ - [ ] Wall-of-text instructions without structure
248
+ - [ ] Assumes skill is the only one loaded
249
+ - [ ] Uses prose where a script would be deterministic
250
+
251
+ ### Quality Anti-Patterns
252
+
253
+ - [ ] No validation step in workflow
254
+ - [ ] No stopping conditions for iterative processes
255
+ - [ ] Missing rollback/failure handling
256
+ - [ ] Over-reliance on "be careful" instead of specific checks