@tienne/gestalt 0.77.2 → 0.78.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/dist/package.json +1 -1
- package/dist/plugin/skills/_shared/proactive-routing.md +39 -2
- package/dist/plugin/skills/_shared/rule-sources.md +262 -0
- package/dist/plugin/skills/execute/SKILL.md +81 -1
- package/dist/plugin/skills/interview/SKILL.md +53 -0
- package/dist/plugin/skills/solve/SKILL.md +34 -1
- package/dist/plugin/skills/spec/SKILL.md +36 -0
- package/dist/schemas/gestalt.schema.json +65 -0
- package/dist/src/core/config.d.ts +156 -2
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +454 -10
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +20 -20
- package/dist/src/mcp/server.js +7 -7
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/status.d.ts +14 -2
- package/dist/src/mcp/tools/status.d.ts.map +1 -1
- package/dist/src/mcp/tools/status.js +41 -8
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/skills/_shared/proactive-routing.md +39 -2
- package/plugin/skills/_shared/rule-sources.md +262 -0
- package/plugin/skills/execute/SKILL.md +81 -1
- package/plugin/skills/interview/SKILL.md +53 -0
- package/plugin/skills/solve/SKILL.md +34 -1
- package/plugin/skills/spec/SKILL.md +36 -0
- package/schemas/gestalt.schema.json +65 -0
|
@@ -110,6 +110,27 @@
|
|
|
110
110
|
"description": "Directory containing agent definitions (env: GESTALT_AGENTS_DIR)",
|
|
111
111
|
"default": "agents"
|
|
112
112
|
},
|
|
113
|
+
"ruleSources": {
|
|
114
|
+
"type": "array",
|
|
115
|
+
"items": { "$ref": "#/definitions/ruleSource" },
|
|
116
|
+
"maxItems": 32,
|
|
117
|
+
"description": "Rule sources outside this repo that skills must read before producing work — declared per repo so Gestalt itself stays organization-agnostic. Only declared sources are read; Gestalt never scans attached MCP servers to pick one",
|
|
118
|
+
"default": []
|
|
119
|
+
},
|
|
120
|
+
"ruleSourceErrors": {
|
|
121
|
+
"type": "array",
|
|
122
|
+
"items": { "type": "string" },
|
|
123
|
+
"readOnly": true,
|
|
124
|
+
"description": "Filled by Gestalt, not by the author. Non-empty means a ruleSources declaration could not be parsed — skills stop. Do not read an empty ruleSources array as 'nothing declared' without checking this",
|
|
125
|
+
"default": []
|
|
126
|
+
},
|
|
127
|
+
"ruleSourceWarnings": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"items": { "type": "string" },
|
|
130
|
+
"readOnly": true,
|
|
131
|
+
"description": "Filled by Gestalt, not by the author. Things worth pointing out that are not a reason to stop, such as a top-level key that looks like a misspelled 'ruleSources'. Kept apart from ruleSourceErrors so widening a detector can never halt a session",
|
|
132
|
+
"default": []
|
|
133
|
+
},
|
|
113
134
|
"notifications": {
|
|
114
135
|
"type": "boolean",
|
|
115
136
|
"description": "Enable OS desktop notifications for pipeline events (env: GESTALT_NOTIFICATIONS)",
|
|
@@ -154,6 +175,50 @@
|
|
|
154
175
|
},
|
|
155
176
|
"required": ["provider", "model"],
|
|
156
177
|
"additionalProperties": false
|
|
178
|
+
},
|
|
179
|
+
"ruleSource": {
|
|
180
|
+
"type": "object",
|
|
181
|
+
"description": "A standard neither Gestalt nor the target repo owns — design tokens, org conventions, product principles. See plugin/skills/_shared/rule-sources.md",
|
|
182
|
+
"properties": {
|
|
183
|
+
"id": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"minLength": 1,
|
|
186
|
+
"maxLength": 64,
|
|
187
|
+
"description": "Name used in reporting. Must be unique within this config. Shown to the user as-is, so anything that opens a new line or table cell is rejected — control characters, line/paragraph separators, backticks and pipes, including forms that normalize into them. Leading and trailing whitespace is rejected too. Non-ASCII names such as Korean are fine"
|
|
188
|
+
},
|
|
189
|
+
"kind": {
|
|
190
|
+
"type": "string",
|
|
191
|
+
"enum": ["mcp", "file", "skill"],
|
|
192
|
+
"description": "Where the rule lives — an MCP tool, a file path, or another skill that owns the task"
|
|
193
|
+
},
|
|
194
|
+
"ref": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"minLength": 1,
|
|
197
|
+
"maxLength": 512,
|
|
198
|
+
"description": "Target for the given kind — MCP tool name (mcp__plate__get_design_tokens), repo-relative file path, or skill name (review, gestalt:review). No character that could make the checked value differ from the value actually opened: whitespace, invisible characters, forms that normalize into something else, and separator lookalikes. The stored ref is normalized to NFC so it matches what was checked. A file ref must stay inside the repo: absolute paths, .., and credential files are rejected. Over the length limit the source is rejected rather than truncated, so a source is never silently unreadable. The full list lives in plugin/skills/_shared/rule-sources.md"
|
|
199
|
+
},
|
|
200
|
+
"scope": {
|
|
201
|
+
"type": "array",
|
|
202
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 32 },
|
|
203
|
+
"maxItems": 16,
|
|
204
|
+
"description": "Read this source only for tasks tagged with one of these. Tags come from the files the task touches (ui, css, api, db, docs, test), not from the request wording. Empty means always read",
|
|
205
|
+
"default": []
|
|
206
|
+
},
|
|
207
|
+
"trust": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"enum": ["convention", "delegate"],
|
|
210
|
+
"description": "'convention' follows the format it defines (token names, naming, required fields). 'delegate' hands the task to it instead and requires kind: skill. Neither lets the source widen the scope of work",
|
|
211
|
+
"default": "convention"
|
|
212
|
+
},
|
|
213
|
+
"onMissing": {
|
|
214
|
+
"type": "string",
|
|
215
|
+
"enum": ["skip", "warn", "stop"],
|
|
216
|
+
"description": "When the source cannot be read. 'skip' proceeds silently, 'warn' proceeds and records the gap in the completion report, 'stop' halts and explains what would unblock it",
|
|
217
|
+
"default": "warn"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"required": ["id", "kind", "ref"],
|
|
221
|
+
"additionalProperties": false
|
|
157
222
|
}
|
|
158
223
|
}
|
|
159
224
|
}
|