intentdna 1.0.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 (184) hide show
  1. package/LICENSE +69 -0
  2. package/README.md +251 -0
  3. package/dist/audit/index.d.ts +109 -0
  4. package/dist/audit/index.d.ts.map +1 -0
  5. package/dist/audit/index.js +144 -0
  6. package/dist/audit/index.js.map +1 -0
  7. package/dist/cli/commands/compile.d.ts +14 -0
  8. package/dist/cli/commands/compile.d.ts.map +1 -0
  9. package/dist/cli/commands/compile.js +89 -0
  10. package/dist/cli/commands/compile.js.map +1 -0
  11. package/dist/cli/commands/epigenetic.d.ts +20 -0
  12. package/dist/cli/commands/epigenetic.d.ts.map +1 -0
  13. package/dist/cli/commands/epigenetic.js +112 -0
  14. package/dist/cli/commands/epigenetic.js.map +1 -0
  15. package/dist/cli/commands/evolve.d.ts +12 -0
  16. package/dist/cli/commands/evolve.d.ts.map +1 -0
  17. package/dist/cli/commands/evolve.js +52 -0
  18. package/dist/cli/commands/evolve.js.map +1 -0
  19. package/dist/cli/commands/guard.d.ts +22 -0
  20. package/dist/cli/commands/guard.d.ts.map +1 -0
  21. package/dist/cli/commands/guard.js +257 -0
  22. package/dist/cli/commands/guard.js.map +1 -0
  23. package/dist/cli/commands/import.d.ts +71 -0
  24. package/dist/cli/commands/import.d.ts.map +1 -0
  25. package/dist/cli/commands/import.js +428 -0
  26. package/dist/cli/commands/import.js.map +1 -0
  27. package/dist/cli/commands/init.d.ts +13 -0
  28. package/dist/cli/commands/init.d.ts.map +1 -0
  29. package/dist/cli/commands/init.js +171 -0
  30. package/dist/cli/commands/init.js.map +1 -0
  31. package/dist/cli/commands/run.d.ts +59 -0
  32. package/dist/cli/commands/run.d.ts.map +1 -0
  33. package/dist/cli/commands/run.js +350 -0
  34. package/dist/cli/commands/run.js.map +1 -0
  35. package/dist/cli/commands/show.d.ts +12 -0
  36. package/dist/cli/commands/show.d.ts.map +1 -0
  37. package/dist/cli/commands/show.js +78 -0
  38. package/dist/cli/commands/show.js.map +1 -0
  39. package/dist/cli/commands/sync.d.ts +31 -0
  40. package/dist/cli/commands/sync.d.ts.map +1 -0
  41. package/dist/cli/commands/sync.js +307 -0
  42. package/dist/cli/commands/sync.js.map +1 -0
  43. package/dist/cli/commands/validate.d.ts +11 -0
  44. package/dist/cli/commands/validate.d.ts.map +1 -0
  45. package/dist/cli/commands/validate.js +30 -0
  46. package/dist/cli/commands/validate.js.map +1 -0
  47. package/dist/cli/commands/verify.d.ts +33 -0
  48. package/dist/cli/commands/verify.d.ts.map +1 -0
  49. package/dist/cli/commands/verify.js +102 -0
  50. package/dist/cli/commands/verify.js.map +1 -0
  51. package/dist/cli/index.d.ts +15 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +358 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/cli/util/format.d.ts +24 -0
  56. package/dist/cli/util/format.d.ts.map +1 -0
  57. package/dist/cli/util/format.js +67 -0
  58. package/dist/cli/util/format.js.map +1 -0
  59. package/dist/cli/util/prompt.d.ts +11 -0
  60. package/dist/cli/util/prompt.d.ts.map +1 -0
  61. package/dist/cli/util/prompt.js +51 -0
  62. package/dist/cli/util/prompt.js.map +1 -0
  63. package/dist/compiler/activate.d.ts +29 -0
  64. package/dist/compiler/activate.d.ts.map +1 -0
  65. package/dist/compiler/activate.js +141 -0
  66. package/dist/compiler/activate.js.map +1 -0
  67. package/dist/compiler/cascade.d.ts +27 -0
  68. package/dist/compiler/cascade.d.ts.map +1 -0
  69. package/dist/compiler/cascade.js +124 -0
  70. package/dist/compiler/cascade.js.map +1 -0
  71. package/dist/compiler/compile.d.ts +17 -0
  72. package/dist/compiler/compile.d.ts.map +1 -0
  73. package/dist/compiler/compile.js +219 -0
  74. package/dist/compiler/compile.js.map +1 -0
  75. package/dist/compiler/index.d.ts +28 -0
  76. package/dist/compiler/index.d.ts.map +1 -0
  77. package/dist/compiler/index.js +51 -0
  78. package/dist/compiler/index.js.map +1 -0
  79. package/dist/compiler/workflow.d.ts +37 -0
  80. package/dist/compiler/workflow.d.ts.map +1 -0
  81. package/dist/compiler/workflow.js +274 -0
  82. package/dist/compiler/workflow.js.map +1 -0
  83. package/dist/evolution/collector.d.ts +52 -0
  84. package/dist/evolution/collector.d.ts.map +1 -0
  85. package/dist/evolution/collector.js +72 -0
  86. package/dist/evolution/collector.js.map +1 -0
  87. package/dist/evolution/fitness.d.ts +33 -0
  88. package/dist/evolution/fitness.d.ts.map +1 -0
  89. package/dist/evolution/fitness.js +96 -0
  90. package/dist/evolution/fitness.js.map +1 -0
  91. package/dist/evolution/index.d.ts +53 -0
  92. package/dist/evolution/index.d.ts.map +1 -0
  93. package/dist/evolution/index.js +69 -0
  94. package/dist/evolution/index.js.map +1 -0
  95. package/dist/evolution/marker-gen.d.ts +31 -0
  96. package/dist/evolution/marker-gen.d.ts.map +1 -0
  97. package/dist/evolution/marker-gen.js +141 -0
  98. package/dist/evolution/marker-gen.js.map +1 -0
  99. package/dist/evolution/store.d.ts +24 -0
  100. package/dist/evolution/store.d.ts.map +1 -0
  101. package/dist/evolution/store.js +78 -0
  102. package/dist/evolution/store.js.map +1 -0
  103. package/dist/evolution/types.d.ts +73 -0
  104. package/dist/evolution/types.d.ts.map +1 -0
  105. package/dist/evolution/types.js +14 -0
  106. package/dist/evolution/types.js.map +1 -0
  107. package/dist/index.d.ts +4 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +4 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/log/logger.d.ts +15 -0
  112. package/dist/log/logger.d.ts.map +1 -0
  113. package/dist/log/logger.js +36 -0
  114. package/dist/log/logger.js.map +1 -0
  115. package/dist/runtime/agent-md.d.ts +56 -0
  116. package/dist/runtime/agent-md.d.ts.map +1 -0
  117. package/dist/runtime/agent-md.js +257 -0
  118. package/dist/runtime/agent-md.js.map +1 -0
  119. package/dist/runtime/claude-sdk.d.ts +51 -0
  120. package/dist/runtime/claude-sdk.d.ts.map +1 -0
  121. package/dist/runtime/claude-sdk.js +78 -0
  122. package/dist/runtime/claude-sdk.js.map +1 -0
  123. package/dist/runtime/hooks.d.ts +67 -0
  124. package/dist/runtime/hooks.d.ts.map +1 -0
  125. package/dist/runtime/hooks.js +645 -0
  126. package/dist/runtime/hooks.js.map +1 -0
  127. package/dist/runtime/index.d.ts +9 -0
  128. package/dist/runtime/index.d.ts.map +1 -0
  129. package/dist/runtime/index.js +5 -0
  130. package/dist/runtime/index.js.map +1 -0
  131. package/dist/runtime/markdown.d.ts +36 -0
  132. package/dist/runtime/markdown.d.ts.map +1 -0
  133. package/dist/runtime/markdown.js +214 -0
  134. package/dist/runtime/markdown.js.map +1 -0
  135. package/dist/runtime/settings-adapter.d.ts +33 -0
  136. package/dist/runtime/settings-adapter.d.ts.map +1 -0
  137. package/dist/runtime/settings-adapter.js +78 -0
  138. package/dist/runtime/settings-adapter.js.map +1 -0
  139. package/dist/runtime/skill-adapter.d.ts +22 -0
  140. package/dist/runtime/skill-adapter.d.ts.map +1 -0
  141. package/dist/runtime/skill-adapter.js +170 -0
  142. package/dist/runtime/skill-adapter.js.map +1 -0
  143. package/dist/runtime/workflow-runner.d.ts +53 -0
  144. package/dist/runtime/workflow-runner.d.ts.map +1 -0
  145. package/dist/runtime/workflow-runner.js +420 -0
  146. package/dist/runtime/workflow-runner.js.map +1 -0
  147. package/dist/schema/index.d.ts +2 -0
  148. package/dist/schema/index.d.ts.map +1 -0
  149. package/dist/schema/index.js +2 -0
  150. package/dist/schema/index.js.map +1 -0
  151. package/dist/schema/types.d.ts +275 -0
  152. package/dist/schema/types.d.ts.map +1 -0
  153. package/dist/schema/types.js +11 -0
  154. package/dist/schema/types.js.map +1 -0
  155. package/dist/schema/validate.d.ts +20 -0
  156. package/dist/schema/validate.d.ts.map +1 -0
  157. package/dist/schema/validate.js +379 -0
  158. package/dist/schema/validate.js.map +1 -0
  159. package/dist/schema/yaml-parser.d.ts +12 -0
  160. package/dist/schema/yaml-parser.d.ts.map +1 -0
  161. package/dist/schema/yaml-parser.js +298 -0
  162. package/dist/schema/yaml-parser.js.map +1 -0
  163. package/dist/species/default.dna.json +62 -0
  164. package/dist/templates/api-backend.dna.yaml +77 -0
  165. package/dist/templates/brainstorming-first.dna.yaml +71 -0
  166. package/dist/templates/branch-finishing.dna.yaml +54 -0
  167. package/dist/templates/code-review-pipeline.dna.yaml +91 -0
  168. package/dist/templates/devops-cicd.dna.yaml +67 -0
  169. package/dist/templates/documentation-writer.dna.yaml +71 -0
  170. package/dist/templates/enterprise-baseline.dna.yaml +66 -0
  171. package/dist/templates/frontend-quality.dna.yaml +88 -0
  172. package/dist/templates/full-pipeline.dna.yaml +129 -0
  173. package/dist/templates/mobile-dev.dna.yaml +68 -0
  174. package/dist/templates/monorepo-governance.dna.yaml +60 -0
  175. package/dist/templates/multi-perspective-review.dna.yaml +109 -0
  176. package/dist/templates/pr-submitter.dna.yaml +55 -0
  177. package/dist/templates/safe-refactoring.dna.yaml +65 -0
  178. package/dist/templates/secure-dev.dna.yaml +90 -0
  179. package/dist/templates/subagent-parallel.dna.yaml +98 -0
  180. package/dist/templates/systematic-debugging.dna.yaml +55 -0
  181. package/dist/templates/tdd-strict.dna.yaml +69 -0
  182. package/dist/templates/verification-loop.dna.yaml +53 -0
  183. package/dist/templates/yolo-with-guardrails.dna.yaml +56 -0
  184. package/package.json +43 -0
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Intent DNA — Minimal YAML Parser
3
+ *
4
+ * Parses the YAML subset used by DNA templates and dna import output.
5
+ * Supports: scalars, arrays (inline and block), objects (indentation),
6
+ * comments, quoted strings. Does NOT support: anchors, aliases, tags,
7
+ * multi-line scalars (|, >), complex keys, merge keys.
8
+ *
9
+ * Zero external dependencies.
10
+ */
11
+ export function parseYAML(input) {
12
+ const lines = input.split("\n");
13
+ const result = parseBlock(lines, 0, 0);
14
+ return result.value;
15
+ }
16
+ function parseBlock(lines, startLine, baseIndent) {
17
+ const obj = {};
18
+ let i = startLine;
19
+ while (i < lines.length) {
20
+ const line = lines[i];
21
+ const stripped = line.replace(/#.*$/, "").trimEnd();
22
+ // Skip empty lines and pure comments
23
+ if (stripped.trim() === "") {
24
+ i++;
25
+ continue;
26
+ }
27
+ const indent = getIndent(line);
28
+ // If dedented below our level, we're done with this block
29
+ if (indent < baseIndent) {
30
+ break;
31
+ }
32
+ // Skip lines indented beyond our level (handled by recursion)
33
+ if (indent > baseIndent && Object.keys(obj).length > 0) {
34
+ // This shouldn't happen in well-structured YAML at this level
35
+ // but handle gracefully
36
+ i++;
37
+ continue;
38
+ }
39
+ const content = stripped.trim();
40
+ // Array item at this level
41
+ if (content.startsWith("- ")) {
42
+ // We're in an array context — parse as array
43
+ const arr = parseArray(lines, i, indent);
44
+ return { value: arr.value, nextLine: arr.nextLine };
45
+ }
46
+ // Key-value pair
47
+ const colonIdx = findKeyColon(content);
48
+ if (colonIdx > 0) {
49
+ const key = content.slice(0, colonIdx).trim();
50
+ const valueStr = content.slice(colonIdx + 1).trim();
51
+ if (valueStr === "" || valueStr === "|" || valueStr === ">") {
52
+ // Value is a nested block — check next line's indent
53
+ const nextNonEmpty = findNextNonEmptyLine(lines, i + 1);
54
+ if (nextNonEmpty < lines.length) {
55
+ const nextIndent = getIndent(lines[nextNonEmpty]);
56
+ if (nextIndent > indent) {
57
+ const nextContent = lines[nextNonEmpty].trim();
58
+ if (nextContent.startsWith("- ")) {
59
+ // Nested array
60
+ const arr = parseArray(lines, nextNonEmpty, nextIndent);
61
+ obj[key] = arr.value;
62
+ i = arr.nextLine;
63
+ }
64
+ else {
65
+ // Nested object
66
+ const nested = parseBlock(lines, nextNonEmpty, nextIndent);
67
+ obj[key] = nested.value;
68
+ i = nested.nextLine;
69
+ }
70
+ }
71
+ else {
72
+ obj[key] = null;
73
+ i++;
74
+ }
75
+ }
76
+ else {
77
+ obj[key] = null;
78
+ i++;
79
+ }
80
+ }
81
+ else {
82
+ // Inline value
83
+ obj[key] = parseScalar(valueStr);
84
+ i++;
85
+ }
86
+ }
87
+ else {
88
+ i++;
89
+ }
90
+ }
91
+ return { value: obj, nextLine: i };
92
+ }
93
+ function parseArray(lines, startLine, baseIndent) {
94
+ const arr = [];
95
+ let i = startLine;
96
+ while (i < lines.length) {
97
+ const line = lines[i];
98
+ const stripped = line.replace(/#.*$/, "").trimEnd();
99
+ if (stripped.trim() === "") {
100
+ i++;
101
+ continue;
102
+ }
103
+ const indent = getIndent(line);
104
+ if (indent < baseIndent) {
105
+ break;
106
+ }
107
+ if (indent > baseIndent) {
108
+ // Continuation of previous array item (nested content)
109
+ i++;
110
+ continue;
111
+ }
112
+ const content = stripped.trim();
113
+ if (!content.startsWith("- ")) {
114
+ break;
115
+ }
116
+ const itemContent = content.slice(2).trim();
117
+ if (itemContent === "") {
118
+ // Nested block under array item
119
+ const nextNonEmpty = findNextNonEmptyLine(lines, i + 1);
120
+ if (nextNonEmpty < lines.length) {
121
+ const nextIndent = getIndent(lines[nextNonEmpty]);
122
+ if (nextIndent > baseIndent) {
123
+ const nested = parseBlock(lines, nextNonEmpty, nextIndent);
124
+ arr.push(nested.value);
125
+ i = nested.nextLine;
126
+ }
127
+ else {
128
+ arr.push(null);
129
+ i++;
130
+ }
131
+ }
132
+ else {
133
+ arr.push(null);
134
+ i++;
135
+ }
136
+ }
137
+ else {
138
+ // Check if there's a nested block under this item
139
+ const nextNonEmpty = findNextNonEmptyLine(lines, i + 1);
140
+ const hasNestedBlock = nextNonEmpty < lines.length && getIndent(lines[nextNonEmpty]) > baseIndent + 2;
141
+ if (hasNestedBlock && findKeyColon(itemContent) > 0) {
142
+ // Array item with key-value that has nested content
143
+ const colonIdx = findKeyColon(itemContent);
144
+ const key = itemContent.slice(0, colonIdx).trim();
145
+ const valStr = itemContent.slice(colonIdx + 1).trim();
146
+ const itemObj = {};
147
+ if (valStr) {
148
+ itemObj[key] = parseScalar(valStr);
149
+ }
150
+ // Parse additional nested keys
151
+ const nestedIndent = getIndent(lines[nextNonEmpty]);
152
+ const nested = parseBlock(lines, nextNonEmpty, nestedIndent);
153
+ if (typeof nested.value === "object" && nested.value !== null) {
154
+ Object.assign(itemObj, { [key]: valStr ? parseScalar(valStr) : null }, nested.value);
155
+ }
156
+ arr.push(itemObj);
157
+ i = nested.nextLine;
158
+ }
159
+ else if (findKeyColon(itemContent) > 0) {
160
+ // Array item that is an object (single line key: value)
161
+ // Check for more keys at indent+2
162
+ const nextNE = findNextNonEmptyLine(lines, i + 1);
163
+ if (nextNE < lines.length && getIndent(lines[nextNE]) === baseIndent + 2 && !lines[nextNE].trim().startsWith("- ")) {
164
+ // Multi-key object array item
165
+ const itemObj = {};
166
+ const colonIdx = findKeyColon(itemContent);
167
+ itemObj[itemContent.slice(0, colonIdx).trim()] = parseScalar(itemContent.slice(colonIdx + 1).trim());
168
+ const nested = parseBlock(lines, nextNE, baseIndent + 2);
169
+ if (typeof nested.value === "object" && nested.value !== null) {
170
+ Object.assign(itemObj, nested.value);
171
+ }
172
+ arr.push(itemObj);
173
+ i = nested.nextLine;
174
+ }
175
+ else {
176
+ // Single key-value object
177
+ const itemObj = {};
178
+ const colonIdx = findKeyColon(itemContent);
179
+ itemObj[itemContent.slice(0, colonIdx).trim()] = parseScalar(itemContent.slice(colonIdx + 1).trim());
180
+ arr.push(itemObj);
181
+ i++;
182
+ }
183
+ }
184
+ else {
185
+ // Simple scalar array item
186
+ arr.push(parseScalar(itemContent));
187
+ i++;
188
+ }
189
+ }
190
+ }
191
+ return { value: arr, nextLine: i };
192
+ }
193
+ function parseScalar(s) {
194
+ if (s === "")
195
+ return null;
196
+ // Inline empty object: {}
197
+ if (s === "{}")
198
+ return {};
199
+ // Quoted string
200
+ if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
201
+ return s.slice(1, -1).replace(/\\"/g, '"').replace(/\\'/g, "'").replace(/\\\\/g, "\\");
202
+ }
203
+ // Inline array: [a, b, c]
204
+ if (s.startsWith("[") && s.endsWith("]")) {
205
+ const inner = s.slice(1, -1).trim();
206
+ if (inner === "")
207
+ return [];
208
+ return splitInlineArray(inner).map((item) => parseScalar(item.trim()));
209
+ }
210
+ // Boolean
211
+ if (s === "true" || s === "True" || s === "TRUE")
212
+ return true;
213
+ if (s === "false" || s === "False" || s === "FALSE")
214
+ return false;
215
+ // Null
216
+ if (s === "null" || s === "~")
217
+ return null;
218
+ // Number
219
+ if (/^-?\d+$/.test(s))
220
+ return parseInt(s, 10);
221
+ if (/^-?\d+\.\d+$/.test(s))
222
+ return parseFloat(s);
223
+ // Plain string
224
+ return s;
225
+ }
226
+ function splitInlineArray(s) {
227
+ const result = [];
228
+ let current = "";
229
+ let inQuote = false;
230
+ let quoteChar = "";
231
+ for (let i = 0; i < s.length; i++) {
232
+ const ch = s[i];
233
+ if (inQuote) {
234
+ current += ch;
235
+ if (ch === quoteChar)
236
+ inQuote = false;
237
+ }
238
+ else if (ch === '"' || ch === "'") {
239
+ current += ch;
240
+ inQuote = true;
241
+ quoteChar = ch;
242
+ }
243
+ else if (ch === ",") {
244
+ result.push(current.trim());
245
+ current = "";
246
+ }
247
+ else {
248
+ current += ch;
249
+ }
250
+ }
251
+ if (current.trim())
252
+ result.push(current.trim());
253
+ return result;
254
+ }
255
+ function getIndent(line) {
256
+ let count = 0;
257
+ for (const ch of line) {
258
+ if (ch === " ")
259
+ count++;
260
+ else if (ch === "\t")
261
+ count += 2;
262
+ else
263
+ break;
264
+ }
265
+ return count;
266
+ }
267
+ function findKeyColon(s) {
268
+ // Find first colon that's not inside quotes
269
+ let inQuote = false;
270
+ let quoteChar = "";
271
+ for (let i = 0; i < s.length; i++) {
272
+ const ch = s[i];
273
+ if (inQuote) {
274
+ if (ch === quoteChar)
275
+ inQuote = false;
276
+ }
277
+ else if (ch === '"' || ch === "'") {
278
+ inQuote = true;
279
+ quoteChar = ch;
280
+ }
281
+ else if (ch === ":") {
282
+ // Must be followed by space or end of string to be a key separator
283
+ if (i + 1 >= s.length || s[i + 1] === " ") {
284
+ return i;
285
+ }
286
+ }
287
+ }
288
+ return -1;
289
+ }
290
+ function findNextNonEmptyLine(lines, from) {
291
+ for (let i = from; i < lines.length; i++) {
292
+ const trimmed = lines[i].replace(/#.*$/, "").trim();
293
+ if (trimmed !== "")
294
+ return i;
295
+ }
296
+ return lines.length;
297
+ }
298
+ //# sourceMappingURL=yaml-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-parser.js","sourceRoot":"","sources":["../../src/schema/yaml-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://intentdna.dev/schema/v0.1.json",
3
+ "version": "0.1.0",
4
+ "id": "species:default",
5
+ "name": "Species Default DNA",
6
+ "type": "species",
7
+
8
+ "genes": {
9
+ "integrity": {
10
+ "description": "Never deceive or manipulate; always be transparent and honest",
11
+ "codons": [
12
+ { "type": "threshold", "condition": "deception == false" },
13
+ { "type": "threshold", "condition": "manipulation == false" },
14
+ { "type": "attract", "target": "transparency" },
15
+ { "type": "attract", "target": "honesty" },
16
+ { "type": "sense", "signal": "ethical_ambiguity", "response": "escalate_to_human" }
17
+ ],
18
+ "tags": ["ethics", "core"]
19
+ },
20
+ "safety": {
21
+ "description": "Avoid actions that could cause harm; escalate when uncertain",
22
+ "codons": [
23
+ { "type": "threshold", "condition": "potential_harm == false" },
24
+ { "type": "repel", "target": "harmful_actions" },
25
+ { "type": "repel", "target": "unsafe_operations" },
26
+ { "type": "sense", "signal": "safety_concern", "response": "escalate_to_human" },
27
+ { "type": "sense", "signal": "irreversible_action", "response": "escalate_to_human" }
28
+ ],
29
+ "tags": ["safety", "core"]
30
+ },
31
+ "accuracy": {
32
+ "description": "Provide accurate, verified information; acknowledge uncertainty",
33
+ "codons": [
34
+ { "type": "attract", "target": "verified_sources" },
35
+ { "type": "attract", "target": "factual_accuracy" },
36
+ { "type": "repel", "target": "unverified_claims" },
37
+ { "type": "sense", "signal": "uncertain_information", "response": "verify_before_share" },
38
+ { "type": "weight", "a": "accuracy", "b": "speed", "ratio": 0.7 }
39
+ ],
40
+ "tags": ["quality", "core"]
41
+ }
42
+ },
43
+
44
+ "contexts": {},
45
+
46
+ "epigenetic": {
47
+ "markers": []
48
+ },
49
+
50
+ "cascade": {
51
+ "inherits": [],
52
+ "priority": 0
53
+ },
54
+
55
+ "metadata": {
56
+ "created": "2026-03-21T00:00:00Z",
57
+ "updated": "2026-03-21T00:00:00Z",
58
+ "experience_hours": 0,
59
+ "gene_count": 3,
60
+ "epigenetic_marker_count": 0
61
+ }
62
+ }
@@ -0,0 +1,77 @@
1
+ # api-backend: 后端 API 开发标准
2
+ # 参考 Superpowers: claude-api, mcp-builder
3
+ # 适用: Node.js/Python API 项目
4
+
5
+ version: "0.1.0"
6
+ id: template_api_backend
7
+ name: API Backend Standards
8
+ type: project
9
+
10
+ cascade:
11
+ inherits: ["species:default"]
12
+ priority: 100
13
+
14
+ genes:
15
+ api_security:
16
+ description: API security best practices
17
+ codons:
18
+ - type: repel
19
+ target: sql_injection
20
+ - type: repel
21
+ target: command_injection
22
+ - type: repel
23
+ target: hardcoded_secrets
24
+ - type: repel
25
+ target: cors_wildcard
26
+ - type: threshold
27
+ condition: "env_file_committed == false"
28
+ action: block
29
+ - type: threshold
30
+ condition: "secret_in_code == false"
31
+ action: block
32
+
33
+ api_quality:
34
+ description: API design quality
35
+ codons:
36
+ - type: attract
37
+ target: input_validation
38
+ - type: attract
39
+ target: error_handling
40
+ - type: attract
41
+ target: rate_limiting
42
+ - type: attract
43
+ target: request_logging
44
+ - type: repel
45
+ target: unvalidated_input
46
+
47
+ database_safety:
48
+ description: Database operation safety
49
+ codons:
50
+ - type: repel
51
+ target: raw_sql_queries
52
+ - type: threshold
53
+ condition: "drop_table == false"
54
+ action: block
55
+ - type: threshold
56
+ condition: "truncate_table == false"
57
+ action: block
58
+ - type: threshold
59
+ condition: "migration_without_backup == false"
60
+ action: escalate
61
+
62
+ contexts: {}
63
+
64
+ roles:
65
+ backend_dev:
66
+ description: Backend developer
67
+ tool_permissions:
68
+ allow: [Read, Edit, Write, Grep, Glob, Bash]
69
+ scope:
70
+ read: ["**/*"]
71
+ write: ["src/**", "test/**", "migrations/**"]
72
+ instructions:
73
+ - Validate all external input at API boundaries
74
+ - Use parameterized queries, never raw SQL
75
+ - Add rate limiting to public endpoints
76
+ - Log all requests with correlation IDs
77
+ - Never commit .env files or secrets
@@ -0,0 +1,71 @@
1
+ # brainstorming-first: 先设计后编码
2
+ # 参考 Superpowers: brainstorming skill — Socratic questioning before any code
3
+ # 参考 Superpowers: writing-plans skill — task decomposition with 2-5 min chunks
4
+ # 适用: 任何需要"先想清楚再动手"的项目
5
+
6
+ version: "0.1.0"
7
+ id: template_brainstorming_first
8
+ name: Brainstorming First
9
+ type: project
10
+
11
+ cascade:
12
+ inherits: ["species:default"]
13
+ priority: 100
14
+
15
+ genes:
16
+ design_before_code:
17
+ description: No implementation before requirements are clear
18
+ codons:
19
+ - type: attract
20
+ target: requirements_clarification
21
+ - type: attract
22
+ target: design_document
23
+ - type: repel
24
+ target: premature_implementation
25
+ - type: threshold
26
+ condition: "code_without_plan == false"
27
+ action: block
28
+
29
+ socratic_refinement:
30
+ description: Ask questions to refine requirements, don't assume
31
+ codons:
32
+ - type: attract
33
+ target: clarifying_questions
34
+ - type: attract
35
+ target: assumption_validation
36
+ - type: repel
37
+ target: silent_assumptions
38
+ - type: sense
39
+ signal: ambiguous_requirement
40
+ response: escalate_to_human
41
+
42
+ task_decomposition:
43
+ description: Break work into small verifiable chunks
44
+ codons:
45
+ - type: attract
46
+ target: small_tasks
47
+ - type: attract
48
+ target: verifiable_deliverables
49
+ - type: repel
50
+ target: monolithic_changes
51
+ - type: weight
52
+ a: granularity
53
+ b: speed
54
+ ratio: 0.7
55
+
56
+ contexts: {}
57
+
58
+ roles:
59
+ planner:
60
+ description: Designs solution, decomposes tasks, never writes code
61
+ tool_permissions:
62
+ allow: [Read, Grep, Glob, Bash]
63
+ deny: [Edit, Write, NotebookEdit]
64
+ scope:
65
+ read: ["**/*"]
66
+ write: []
67
+ instructions:
68
+ - Ask Socratic questions to clarify requirements before proposing solutions
69
+ - Present design in sections for user to approve one at a time
70
+ - Decompose into tasks of 2-5 minutes each with exact file paths
71
+ - Never write implementation code — you are design-only
@@ -0,0 +1,54 @@
1
+ # branch-finishing: 开发分支完成决策
2
+ # 参考 Superpowers: finishing-a-development-branch skill
3
+ # 参考 Superpowers: using-git-worktrees skill
4
+ # 适用: 功能完成后的 merge/PR/cleanup 决策
5
+
6
+ version: "0.1.0"
7
+ id: template_branch_finishing
8
+ name: Branch Finishing Workflow
9
+ type: project
10
+
11
+ cascade:
12
+ inherits: ["species:default"]
13
+ priority: 100
14
+
15
+ genes:
16
+ clean_finish:
17
+ description: Ensure branch is ready before merge
18
+ codons:
19
+ - type: attract
20
+ target: all_tests_passing
21
+ - type: attract
22
+ target: no_debug_artifacts
23
+ - type: repel
24
+ target: merge_with_failing_tests
25
+ - type: threshold
26
+ condition: "merge_with_conflicts == false"
27
+ action: block
28
+
29
+ proper_commit_history:
30
+ description: Clean, meaningful commit messages
31
+ codons:
32
+ - type: attract
33
+ target: descriptive_commits
34
+ - type: attract
35
+ target: atomic_commits
36
+ - type: repel
37
+ target: wip_commits_in_main
38
+ - type: repel
39
+ target: giant_single_commit
40
+
41
+ safe_merge:
42
+ description: Never force-push or destructive merge
43
+ codons:
44
+ - type: threshold
45
+ condition: "force_push_main == false"
46
+ action: block
47
+ - type: threshold
48
+ condition: "delete_branch_with_unmerged == false"
49
+ action: escalate
50
+ - type: sense
51
+ signal: irreversible_action
52
+ response: escalate_to_human
53
+
54
+ contexts: {}
@@ -0,0 +1,91 @@
1
+ # code-review-pipeline: 代码审查流水线
2
+ # 参考 Superpowers: requesting-code-review, receiving-code-review
3
+ # 适用: 需要结构化 agent 审查流程的团队
4
+
5
+ version: "0.1.0"
6
+ id: template_code_review_pipeline
7
+ name: Code Review Pipeline
8
+ type: project
9
+
10
+ cascade:
11
+ inherits: ["species:default"]
12
+ priority: 100
13
+
14
+ genes:
15
+ review_rigor:
16
+ description: Thorough code review standards
17
+ codons:
18
+ - type: attract
19
+ target: line_by_line_review
20
+ - type: attract
21
+ target: security_check
22
+ - type: attract
23
+ target: test_coverage_check
24
+ - type: repel
25
+ target: rubber_stamp_approval
26
+ - type: threshold
27
+ condition: "merge_without_review == false"
28
+ action: block
29
+
30
+ constructive_feedback:
31
+ description: Reviews should be actionable
32
+ codons:
33
+ - type: attract
34
+ target: specific_suggestions
35
+ - type: attract
36
+ target: code_references
37
+ - type: repel
38
+ target: vague_criticism
39
+
40
+ roles:
41
+ reviewer:
42
+ description: Code reviewer — read-only analysis
43
+ tool_permissions:
44
+ allow: [Read, Grep, Glob, Bash]
45
+ deny: [Edit, Write, NotebookEdit]
46
+ scope:
47
+ read: ["**/*"]
48
+ write: []
49
+ instructions:
50
+ - Check design compliance against task specification
51
+ - Verify test coverage for new functionality
52
+ - Look for security vulnerabilities (OWASP top 10)
53
+ - Check for breaking API changes
54
+ - Give clear PASS/FAIL verdict with line references
55
+ post_checks:
56
+ - vitest_run
57
+ - tsc_no_errors
58
+
59
+ implementer:
60
+ description: Code implementer — responds to review feedback
61
+ tool_permissions:
62
+ allow: [Read, Edit, Write, Grep, Glob, Bash]
63
+ scope:
64
+ read: ["**/*"]
65
+ write: ["src/**", "test/**"]
66
+ instructions:
67
+ - Address all CRITICAL issues from review before requesting re-review
68
+ - Add regression tests for every bugfix
69
+ - Run full test suite after changes
70
+
71
+ contexts: {}
72
+
73
+ workflow:
74
+ name: review-cycle
75
+ description: Implement then review with retry on failure
76
+ steps:
77
+ - id: implement
78
+ role: implementer
79
+ description: Implement the feature
80
+ prompt: "Implement task {{task_id}} according to the design document."
81
+ - id: review
82
+ role: reviewer
83
+ description: Review the implementation
84
+ prompt: "Review all changes for task {{task_id}}. Output PASS or FAIL."
85
+ transitions:
86
+ - from: review
87
+ to: implement
88
+ condition: fail
89
+ retry_policy:
90
+ max_retries: 2
91
+ retry_from: implement