@bendyline/gilde 0.1.93 → 0.1.95
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/authoring/chat-models/underdog-saluki-27b-iq2-mix.json +159 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/raw-index.json +1 -1
- package/data/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
- package/data/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +2 -1
- package/data/craftbook-templates/br/branding-website/versions/1.1.4/craftbook.json +346 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.4/test.json +164 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/na/narrated-slideshow/manifest.json +2 -1
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/craftbook.json +323 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/test.json +217 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +2 -1
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/craftbook.json +501 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/test.json +266 -0
- package/data/craftbook-templates/raw-index.json +1 -1
- package/data/craftbook-templates/re/report-pdf/manifest.json +2 -1
- package/data/craftbook-templates/re/report-pdf/versions/1.1.8/craftbook.json +324 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.8/test.json +258 -0
- package/data/craftbook-templates/re/research-report/manifest.json +2 -1
- package/data/craftbook-templates/re/research-report/versions/1.0.4/craftbook.json +286 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.4/test.json +183 -0
- package/data/craftbook-templates/re/research-to-document/manifest.json +2 -1
- package/data/craftbook-templates/re/research-to-document/versions/1.2.8/craftbook.json +395 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.8/test.json +254 -0
- package/data/image-models/index.json +1 -1
- package/data/image-models/ir/iris-3b-f32/manifest.json +39 -0
- package/data/image-models/ir/iris-3b-f32/versions/1.0.0/manifest.json +19 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/manifest.json +39 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/versions/1.0.0/manifest.json +31 -0
- package/data/image-models/raw-index.json +1 -1
- package/package.json +1 -1
- package/schemas/craftbook-test.schema.json +2 -1
- package/schemas/image-model-version.schema.json +2 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "chat-model",
|
|
4
|
+
"id": "underdog-saluki-27b-iq2-mix",
|
|
5
|
+
"name": "Underdog Saluki 1.0 (27B, IQ2 mix)",
|
|
6
|
+
"description": "Conway Research's compact edition of Qwen 3.8 27B, with mixed 2-bit quantization tuned for tool calling. A 7.9 GB download for local chat, coding, and optional reasoning, with a 262K native context window. This entry supports text and tools; memory use grows with conversation length.",
|
|
7
|
+
"tags": [
|
|
8
|
+
"conway-research",
|
|
9
|
+
"qwen",
|
|
10
|
+
"agentic",
|
|
11
|
+
"coding",
|
|
12
|
+
"tools",
|
|
13
|
+
"reasoning",
|
|
14
|
+
"long-context",
|
|
15
|
+
"low-memory"
|
|
16
|
+
],
|
|
17
|
+
"category": "general",
|
|
18
|
+
"maintainer": {
|
|
19
|
+
"name": "Conway Research",
|
|
20
|
+
"url": "https://huggingface.co/ConwayResearch/Underdog-Saluki-27B-1.0"
|
|
21
|
+
},
|
|
22
|
+
"maker": {
|
|
23
|
+
"name": "Alibaba",
|
|
24
|
+
"url": "https://huggingface.co/Qwen/Qwen3.8-27B"
|
|
25
|
+
},
|
|
26
|
+
"version": "1.0.0",
|
|
27
|
+
"updatedAt": "2026-10-09T00:00:00Z",
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"licenseClass": "open",
|
|
30
|
+
"licenseShortName": "Apache 2.0",
|
|
31
|
+
"parameterSize": "27B",
|
|
32
|
+
"approxSizeBytes": 7898369152,
|
|
33
|
+
"supportsTools": true,
|
|
34
|
+
"contextWindow": 262144,
|
|
35
|
+
"upstream": "https://huggingface.co/ConwayResearch/Underdog-Saluki-27B-1.0",
|
|
36
|
+
"style": {
|
|
37
|
+
"family": "qwen",
|
|
38
|
+
"reasoningFormat": "think",
|
|
39
|
+
"toolCallFormat": "function-call"
|
|
40
|
+
},
|
|
41
|
+
"behaviors": [
|
|
42
|
+
"reasoning.strip-think-tags",
|
|
43
|
+
"provider.merge-system-messages",
|
|
44
|
+
"mcp.compact-tool-schemas",
|
|
45
|
+
"provider.compact-write-transcript",
|
|
46
|
+
"fabrication.detect-past-tense-no-tools",
|
|
47
|
+
"turn.preamble-folding",
|
|
48
|
+
"turn.ramble-detection",
|
|
49
|
+
"prompt.retrieval-first",
|
|
50
|
+
"prompt.workspace-gestalt",
|
|
51
|
+
"prompt.derive-by-execution"
|
|
52
|
+
],
|
|
53
|
+
"tuning": {
|
|
54
|
+
"sampling": {
|
|
55
|
+
"temperature": 0.6,
|
|
56
|
+
"topP": 0.95,
|
|
57
|
+
"topK": 20,
|
|
58
|
+
"minP": 0,
|
|
59
|
+
"presencePenalty": 0,
|
|
60
|
+
"repetitionPenalty": 1,
|
|
61
|
+
"maxTokens": 12288
|
|
62
|
+
},
|
|
63
|
+
"samplingWhenThinking": {
|
|
64
|
+
"temperature": 0.6,
|
|
65
|
+
"topP": 0.95,
|
|
66
|
+
"topK": 20
|
|
67
|
+
},
|
|
68
|
+
"reasoning": {
|
|
69
|
+
"enableThinking": true,
|
|
70
|
+
"thinkingBudget": 4096,
|
|
71
|
+
"templateKwargs": {
|
|
72
|
+
"reasoning_effort": "low"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"profiles": {
|
|
76
|
+
"thinking-general": {
|
|
77
|
+
"sampling": {
|
|
78
|
+
"temperature": 0.6,
|
|
79
|
+
"topP": 0.95,
|
|
80
|
+
"topK": 20,
|
|
81
|
+
"minP": 0,
|
|
82
|
+
"presencePenalty": 0,
|
|
83
|
+
"repetitionPenalty": 1,
|
|
84
|
+
"maxTokens": 12288
|
|
85
|
+
},
|
|
86
|
+
"reasoning": {
|
|
87
|
+
"enableThinking": true,
|
|
88
|
+
"thinkingBudget": 4096,
|
|
89
|
+
"templateKwargs": {
|
|
90
|
+
"reasoning_effort": "low"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"thinking-deep": {
|
|
95
|
+
"reasoning": {
|
|
96
|
+
"enableThinking": true,
|
|
97
|
+
"thinkingBudget": 8192,
|
|
98
|
+
"templateKwargs": {
|
|
99
|
+
"reasoning_effort": "xhigh"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"thinking-coding": {
|
|
104
|
+
"sampling": {
|
|
105
|
+
"temperature": 0.6,
|
|
106
|
+
"topP": 0.95,
|
|
107
|
+
"topK": 20,
|
|
108
|
+
"minP": 0,
|
|
109
|
+
"presencePenalty": 0,
|
|
110
|
+
"repetitionPenalty": 1,
|
|
111
|
+
"maxTokens": 16384
|
|
112
|
+
},
|
|
113
|
+
"reasoning": {
|
|
114
|
+
"enableThinking": true,
|
|
115
|
+
"thinkingBudget": 4096,
|
|
116
|
+
"templateKwargs": {
|
|
117
|
+
"reasoning_effort": "medium"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"thinking-precise": {
|
|
122
|
+
"sampling": {
|
|
123
|
+
"temperature": 0.6,
|
|
124
|
+
"topP": 0.95,
|
|
125
|
+
"topK": 20,
|
|
126
|
+
"minP": 0,
|
|
127
|
+
"presencePenalty": 0,
|
|
128
|
+
"repetitionPenalty": 1,
|
|
129
|
+
"maxTokens": 6144,
|
|
130
|
+
"seed": 0
|
|
131
|
+
},
|
|
132
|
+
"reasoning": {
|
|
133
|
+
"enableThinking": true,
|
|
134
|
+
"thinkingBudget": 4096,
|
|
135
|
+
"templateKwargs": {
|
|
136
|
+
"reasoning_effort": "low"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"instruct": {
|
|
141
|
+
"sampling": {
|
|
142
|
+
"temperature": 0,
|
|
143
|
+
"topP": 0.95,
|
|
144
|
+
"topK": 20,
|
|
145
|
+
"minP": 0,
|
|
146
|
+
"presencePenalty": 0,
|
|
147
|
+
"repetitionPenalty": 1,
|
|
148
|
+
"maxTokens": 4096
|
|
149
|
+
},
|
|
150
|
+
"reasoning": {
|
|
151
|
+
"enableThinking": false
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"llamaCpp": {
|
|
157
|
+
"huggingfaceRepo": "ConwayResearch/Underdog-Saluki-27B-1.0",
|
|
158
|
+
"revision": "1336c0b5d74dfe6ad7f793577092f5effd9f97c6",
|
|
159
|
+
"filename": "Underdog-Saluki-27B-1.0-IQ2-mix.gguf",
|
|
160
|
+
"sha256": "4a673518b11b1c4445f9b9a9d3c40356f5ba39f6a6260dcb25f3fbfd475d9efb",
|
|
161
|
+
"approxSizeBytes": 7898369152,
|
|
162
|
+
"quantization": "IQ2-mix"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"releasedAt": "2026-10-09T00:00:00Z",
|
|
5
|
+
"approxSizeBytes": 7898369152,
|
|
6
|
+
"llamaCpp": {
|
|
7
|
+
"huggingfaceRepo": "ConwayResearch/Underdog-Saluki-27B-1.0",
|
|
8
|
+
"revision": "1336c0b5d74dfe6ad7f793577092f5effd9f97c6",
|
|
9
|
+
"filename": "Underdog-Saluki-27B-1.0-IQ2-mix.gguf",
|
|
10
|
+
"sha256": "4a673518b11b1c4445f9b9a9d3c40356f5ba39f6a6260dcb25f3fbfd475d9efb",
|
|
11
|
+
"approxSizeBytes": 7898369152,
|
|
12
|
+
"quantization": "IQ2-mix"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "branding-website",
|
|
3
|
+
"name": "Branding Website",
|
|
4
|
+
"description": "Build a small brand/marketing website where the visual identity leads. Locks a visual language and mockups FIRST, then writes the copy, then builds the HTML to the locked design — the ordering that makes brand sites feel designed rather than templated.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Brand & visual design (visual-designer) — visual language + mock, BEFORE any HTML → gated on artifact `design/brand-system.md` (markdown-notes)\n2. Copywriting (copywriter) — headlines + section copy to the brand voice → gated on artifact `copy/site-copy.md` (markdown-notes)\n3. Build (developer) — implement index.html to the locked design + copy → gated on `index.html` (html-marketing-site)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
|
|
5
|
+
"entryStepId": "brand-design",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"branding website",
|
|
8
|
+
"landing page",
|
|
9
|
+
"marketing site",
|
|
10
|
+
"brand site"
|
|
11
|
+
],
|
|
12
|
+
"steps": [
|
|
13
|
+
{
|
|
14
|
+
"id": "brand-design",
|
|
15
|
+
"name": "Brand & visual design",
|
|
16
|
+
"description": "visual language + mock, BEFORE any HTML",
|
|
17
|
+
"prompt": "Lock the visual language before a line of HTML exists. Decide: palette (with exact hex values), type pairing using system-safe fonts, spacing/scale, hero treatment, and responsive section order. Produce an ASCII/markdown wireframe of each section (hero, value props, proof or fit, CTA, footer). Write an **acceptance-criteria checklist** that includes the brand rules (\"headings use <font>\", \"palette is exactly <hex list>\", \"hero matches the mock\"). Save the full system, wireframe, and checklist to artifact `design/brand-system.md` with `write_artifact`; note the path in task notes. No HTML yet.",
|
|
18
|
+
"suggestedRole": "visual-designer",
|
|
19
|
+
"toolPolicy": {
|
|
20
|
+
"disallowBuiltinToolsets": [
|
|
21
|
+
"ai-apps",
|
|
22
|
+
"archives",
|
|
23
|
+
"audio",
|
|
24
|
+
"browser-automation",
|
|
25
|
+
"code-execution",
|
|
26
|
+
"craftbooks",
|
|
27
|
+
"data-tables",
|
|
28
|
+
"entity-intel",
|
|
29
|
+
"git",
|
|
30
|
+
"image-intel",
|
|
31
|
+
"images",
|
|
32
|
+
"role-delegation",
|
|
33
|
+
"role-delegation-escalation",
|
|
34
|
+
"security-intel",
|
|
35
|
+
"team-management",
|
|
36
|
+
"videos",
|
|
37
|
+
"web",
|
|
38
|
+
"workspace-fs-write"
|
|
39
|
+
],
|
|
40
|
+
"outputMedium": "artifact",
|
|
41
|
+
"additionalOutputMedia": [
|
|
42
|
+
"task-note"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"advanceWhen": {
|
|
46
|
+
"file": "design/brand-system.md",
|
|
47
|
+
"minBytes": 1,
|
|
48
|
+
"sniff": "nonempty",
|
|
49
|
+
"artifact": true
|
|
50
|
+
},
|
|
51
|
+
"gate": {
|
|
52
|
+
"at": "completion",
|
|
53
|
+
"checks": [
|
|
54
|
+
{
|
|
55
|
+
"kind": "minBytes",
|
|
56
|
+
"file": "design/brand-system.md",
|
|
57
|
+
"bytes": 800,
|
|
58
|
+
"artifact": true
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "sniff",
|
|
62
|
+
"file": "design/brand-system.md",
|
|
63
|
+
"sniff": "nonempty",
|
|
64
|
+
"artifact": true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"kind": "contains",
|
|
68
|
+
"file": "design/brand-system.md",
|
|
69
|
+
"pattern": "#[0-9a-f]{6}",
|
|
70
|
+
"flags": "i",
|
|
71
|
+
"label": "exact palette",
|
|
72
|
+
"artifact": true
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"kind": "contains",
|
|
76
|
+
"file": "design/brand-system.md",
|
|
77
|
+
"pattern": "hero[\\s\\S]*(?:value|benefit)[\\s\\S]*(?:CTA|call.to.action)[\\s\\S]*footer",
|
|
78
|
+
"flags": "i",
|
|
79
|
+
"label": "section wireframe",
|
|
80
|
+
"artifact": true
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"onReject": "brand-design",
|
|
84
|
+
"maxAttempts": 3
|
|
85
|
+
},
|
|
86
|
+
"next": "copy"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "copy",
|
|
90
|
+
"name": "Copywriting",
|
|
91
|
+
"description": "headlines + section copy to the brand voice",
|
|
92
|
+
"prompt": "Read artifact `design/brand-system.md` with `read_artifact`. Write the approved words: headline, subhead, three value-prop blurbs, proof or fit copy, CTA label, and footer. Match the named brand voice and keep it tight — marketing copy, not paragraphs. Save the complete section-keyed copy to artifact `copy/site-copy.md` with `write_artifact`; note the path in task notes so the build phase can drop it straight in.",
|
|
93
|
+
"suggestedRole": "copywriter",
|
|
94
|
+
"toolPolicy": {
|
|
95
|
+
"disallowBuiltinToolsets": [
|
|
96
|
+
"ai-apps",
|
|
97
|
+
"archives",
|
|
98
|
+
"audio",
|
|
99
|
+
"browser-automation",
|
|
100
|
+
"code-execution",
|
|
101
|
+
"craftbooks",
|
|
102
|
+
"data-tables",
|
|
103
|
+
"entity-intel",
|
|
104
|
+
"git",
|
|
105
|
+
"image-intel",
|
|
106
|
+
"images",
|
|
107
|
+
"role-delegation",
|
|
108
|
+
"role-delegation-escalation",
|
|
109
|
+
"security-intel",
|
|
110
|
+
"team-management",
|
|
111
|
+
"videos",
|
|
112
|
+
"web",
|
|
113
|
+
"workspace-fs-write"
|
|
114
|
+
],
|
|
115
|
+
"outputMedium": "artifact",
|
|
116
|
+
"additionalOutputMedia": [
|
|
117
|
+
"task-note"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
"consumes": [
|
|
121
|
+
{
|
|
122
|
+
"file": "design/brand-system.md",
|
|
123
|
+
"artifact": true
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"advanceWhen": {
|
|
127
|
+
"file": "copy/site-copy.md",
|
|
128
|
+
"minBytes": 1,
|
|
129
|
+
"sniff": "nonempty",
|
|
130
|
+
"artifact": true
|
|
131
|
+
},
|
|
132
|
+
"gate": {
|
|
133
|
+
"at": "completion",
|
|
134
|
+
"checks": [
|
|
135
|
+
{
|
|
136
|
+
"kind": "minBytes",
|
|
137
|
+
"file": "copy/site-copy.md",
|
|
138
|
+
"bytes": 450,
|
|
139
|
+
"artifact": true
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"kind": "sniff",
|
|
143
|
+
"file": "copy/site-copy.md",
|
|
144
|
+
"sniff": "nonempty",
|
|
145
|
+
"artifact": true
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"kind": "contains",
|
|
149
|
+
"file": "copy/site-copy.md",
|
|
150
|
+
"pattern": "headline|hero",
|
|
151
|
+
"flags": "i",
|
|
152
|
+
"label": "hero copy",
|
|
153
|
+
"artifact": true
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"kind": "contains",
|
|
157
|
+
"file": "copy/site-copy.md",
|
|
158
|
+
"pattern": "CTA|call.to.action",
|
|
159
|
+
"flags": "i",
|
|
160
|
+
"label": "call to action",
|
|
161
|
+
"artifact": true
|
|
162
|
+
}
|
|
163
|
+
],
|
|
164
|
+
"onReject": "copy",
|
|
165
|
+
"maxAttempts": 3
|
|
166
|
+
},
|
|
167
|
+
"next": "build"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "build",
|
|
171
|
+
"name": "Build",
|
|
172
|
+
"description": "implement index.html to the locked design + copy",
|
|
173
|
+
"prompt": "Read artifacts `design/brand-system.md` and `copy/site-copy.md` with `read_artifact`. Implement workspace `index.html` with `write_file` (inline CSS) to the locked visual language and approved copy — do not redesign in code. Honor the exact palette, type, and section order from the mock; include viewport metadata, semantic sections, a working primary CTA, and a footer. Make it responsive and self-contained with no external assets. On a loop-back, fix only the named gaps. `write_task_note` the workspace path and which criteria now pass.",
|
|
174
|
+
"suggestedRole": "developer",
|
|
175
|
+
"toolPolicy": {
|
|
176
|
+
"disallowBuiltinToolsets": [
|
|
177
|
+
"ai-apps",
|
|
178
|
+
"archives",
|
|
179
|
+
"audio",
|
|
180
|
+
"browser-automation",
|
|
181
|
+
"code-execution",
|
|
182
|
+
"craftbooks",
|
|
183
|
+
"data-tables",
|
|
184
|
+
"entity-intel",
|
|
185
|
+
"git",
|
|
186
|
+
"image-intel",
|
|
187
|
+
"images",
|
|
188
|
+
"role-delegation",
|
|
189
|
+
"role-delegation-escalation",
|
|
190
|
+
"security-intel",
|
|
191
|
+
"team-management",
|
|
192
|
+
"videos",
|
|
193
|
+
"web"
|
|
194
|
+
],
|
|
195
|
+
"outputMedium": "workspace",
|
|
196
|
+
"additionalOutputMedia": [
|
|
197
|
+
"task-note"
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"consumes": [
|
|
201
|
+
{
|
|
202
|
+
"file": "design/brand-system.md",
|
|
203
|
+
"artifact": true
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"file": "copy/site-copy.md",
|
|
207
|
+
"artifact": true
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"advanceWhen": {
|
|
211
|
+
"file": "index.html",
|
|
212
|
+
"minBytes": 1,
|
|
213
|
+
"sniff": "html-complete"
|
|
214
|
+
},
|
|
215
|
+
"gate": {
|
|
216
|
+
"at": "completion",
|
|
217
|
+
"checks": [
|
|
218
|
+
{
|
|
219
|
+
"kind": "minBytes",
|
|
220
|
+
"file": "index.html",
|
|
221
|
+
"bytes": 3200
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"kind": "htmlLint",
|
|
225
|
+
"file": "index.html"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"kind": "contains",
|
|
229
|
+
"file": "index.html",
|
|
230
|
+
"pattern": "<meta[^>]+name=[\"']viewport[\"']",
|
|
231
|
+
"flags": "i",
|
|
232
|
+
"label": "responsive viewport"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"kind": "contains",
|
|
236
|
+
"file": "index.html",
|
|
237
|
+
"pattern": "<footer\\b",
|
|
238
|
+
"flags": "i",
|
|
239
|
+
"label": "footer"
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"scripts": [
|
|
243
|
+
{
|
|
244
|
+
"name": "checkHtmlComplete",
|
|
245
|
+
"scope": "standard",
|
|
246
|
+
"inputs": {
|
|
247
|
+
"file": "index.html"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "checkCssMinBytes",
|
|
252
|
+
"scope": "standard",
|
|
253
|
+
"inputs": {
|
|
254
|
+
"file": "index.html",
|
|
255
|
+
"minBytes": 600
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"onReject": "build",
|
|
260
|
+
"maxAttempts": 4
|
|
261
|
+
},
|
|
262
|
+
"next": "evaluate"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "evaluate",
|
|
266
|
+
"name": "Evaluate",
|
|
267
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
268
|
+
"prompt": "Read workspace `index.html` with `read_file` and compare it with artifacts `design/brand-system.md` and `copy/site-copy.md` via `read_artifact`. Check the brand acceptance criteria specifically: does the palette match the locked hex list, the type match, the responsive section order match the mock, and the copy match what was approved? Render desktop and narrow layouts if you can. A site that works but ignores the locked visual language FAILS — loop back to build.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"build\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
|
|
269
|
+
"suggestedRole": "reviewer",
|
|
270
|
+
"toolPolicy": {
|
|
271
|
+
"disallowBuiltinToolsets": [
|
|
272
|
+
"ai-apps",
|
|
273
|
+
"archives",
|
|
274
|
+
"audio",
|
|
275
|
+
"browser-automation",
|
|
276
|
+
"code-execution",
|
|
277
|
+
"craftbooks",
|
|
278
|
+
"data-tables",
|
|
279
|
+
"entity-intel",
|
|
280
|
+
"git",
|
|
281
|
+
"image-intel",
|
|
282
|
+
"images",
|
|
283
|
+
"role-delegation",
|
|
284
|
+
"role-delegation-escalation",
|
|
285
|
+
"security-intel",
|
|
286
|
+
"team-management",
|
|
287
|
+
"videos",
|
|
288
|
+
"web",
|
|
289
|
+
"workspace-fs-write"
|
|
290
|
+
],
|
|
291
|
+
"outputMedium": "task-note"
|
|
292
|
+
},
|
|
293
|
+
"consumes": [
|
|
294
|
+
{
|
|
295
|
+
"file": "index.html"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"next": "build"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "finish",
|
|
302
|
+
"name": "Finish",
|
|
303
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
304
|
+
"prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
|
|
305
|
+
"suggestedRole": "developer",
|
|
306
|
+
"toolPolicy": {
|
|
307
|
+
"disallowBuiltinToolsets": [
|
|
308
|
+
"ai-apps",
|
|
309
|
+
"archives",
|
|
310
|
+
"artifacts",
|
|
311
|
+
"audio",
|
|
312
|
+
"browser-automation",
|
|
313
|
+
"code-execution",
|
|
314
|
+
"craftbooks",
|
|
315
|
+
"data-tables",
|
|
316
|
+
"entity-intel",
|
|
317
|
+
"git",
|
|
318
|
+
"image-intel",
|
|
319
|
+
"images",
|
|
320
|
+
"role-delegation",
|
|
321
|
+
"role-delegation-escalation",
|
|
322
|
+
"security-intel",
|
|
323
|
+
"team-management",
|
|
324
|
+
"videos",
|
|
325
|
+
"web",
|
|
326
|
+
"workspace-fs-write"
|
|
327
|
+
],
|
|
328
|
+
"outputMedium": "task-note"
|
|
329
|
+
},
|
|
330
|
+
"terminal": true
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"version": "1.1.4",
|
|
334
|
+
"releasedAt": "2026-10-08T20:00:00.000Z",
|
|
335
|
+
"paramSchema": {
|
|
336
|
+
"type": "object",
|
|
337
|
+
"properties": {
|
|
338
|
+
"topic": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"title": "What should this be about?",
|
|
341
|
+
"description": "The subject, audience, and any details you want the crew to include.",
|
|
342
|
+
"fromMessage": true
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|