teamcast 0.6.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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +654 -0
  3. package/dist/application/build-generated-files.d.ts +8 -0
  4. package/dist/application/build-generated-files.d.ts.map +1 -0
  5. package/dist/application/build-generated-files.js +16 -0
  6. package/dist/application/build-generated-files.js.map +1 -0
  7. package/dist/application/team.d.ts +27 -0
  8. package/dist/application/team.d.ts.map +1 -0
  9. package/dist/application/team.js +203 -0
  10. package/dist/application/team.js.map +1 -0
  11. package/dist/application/validate-team.d.ts +32 -0
  12. package/dist/application/validate-team.d.ts.map +1 -0
  13. package/dist/application/validate-team.js +132 -0
  14. package/dist/application/validate-team.js.map +1 -0
  15. package/dist/cli/diff.d.ts +3 -0
  16. package/dist/cli/diff.d.ts.map +1 -0
  17. package/dist/cli/diff.js +57 -0
  18. package/dist/cli/diff.js.map +1 -0
  19. package/dist/cli/explain.d.ts +3 -0
  20. package/dist/cli/explain.d.ts.map +1 -0
  21. package/dist/cli/explain.js +29 -0
  22. package/dist/cli/explain.js.map +1 -0
  23. package/dist/cli/generate.d.ts +3 -0
  24. package/dist/cli/generate.d.ts.map +1 -0
  25. package/dist/cli/generate.js +68 -0
  26. package/dist/cli/generate.js.map +1 -0
  27. package/dist/cli/import.d.ts +3 -0
  28. package/dist/cli/import.d.ts.map +1 -0
  29. package/dist/cli/import.js +93 -0
  30. package/dist/cli/import.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +19 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/init.d.ts +3 -0
  36. package/dist/cli/init.d.ts.map +1 -0
  37. package/dist/cli/init.js +155 -0
  38. package/dist/cli/init.js.map +1 -0
  39. package/dist/cli/manage.d.ts +3 -0
  40. package/dist/cli/manage.d.ts.map +1 -0
  41. package/dist/cli/manage.js +350 -0
  42. package/dist/cli/manage.js.map +1 -0
  43. package/dist/cli/manifest-validation.d.ts +13 -0
  44. package/dist/cli/manifest-validation.d.ts.map +1 -0
  45. package/dist/cli/manifest-validation.js +38 -0
  46. package/dist/cli/manifest-validation.js.map +1 -0
  47. package/dist/cli/reset.d.ts +3 -0
  48. package/dist/cli/reset.d.ts.map +1 -0
  49. package/dist/cli/reset.js +116 -0
  50. package/dist/cli/reset.js.map +1 -0
  51. package/dist/cli/validate.d.ts +3 -0
  52. package/dist/cli/validate.d.ts.map +1 -0
  53. package/dist/cli/validate.js +48 -0
  54. package/dist/cli/validate.js.map +1 -0
  55. package/dist/components/agent-fragments.d.ts +15 -0
  56. package/dist/components/agent-fragments.d.ts.map +1 -0
  57. package/dist/components/agent-fragments.js +163 -0
  58. package/dist/components/agent-fragments.js.map +1 -0
  59. package/dist/components/policy-fragments.d.ts +5 -0
  60. package/dist/components/policy-fragments.d.ts.map +1 -0
  61. package/dist/components/policy-fragments.js +125 -0
  62. package/dist/components/policy-fragments.js.map +1 -0
  63. package/dist/core/assertions.d.ts +28 -0
  64. package/dist/core/assertions.d.ts.map +1 -0
  65. package/dist/core/assertions.js +11 -0
  66. package/dist/core/assertions.js.map +1 -0
  67. package/dist/core/guards.d.ts +11 -0
  68. package/dist/core/guards.d.ts.map +1 -0
  69. package/dist/core/guards.js +20 -0
  70. package/dist/core/guards.js.map +1 -0
  71. package/dist/core/index.d.ts +9 -0
  72. package/dist/core/index.d.ts.map +1 -0
  73. package/dist/core/index.js +9 -0
  74. package/dist/core/index.js.map +1 -0
  75. package/dist/core/instructions.d.ts +10 -0
  76. package/dist/core/instructions.d.ts.map +1 -0
  77. package/dist/core/instructions.js +33 -0
  78. package/dist/core/instructions.js.map +1 -0
  79. package/dist/core/permissions.d.ts +10 -0
  80. package/dist/core/permissions.d.ts.map +1 -0
  81. package/dist/core/permissions.js +67 -0
  82. package/dist/core/permissions.js.map +1 -0
  83. package/dist/core/policy-evaluator.d.ts +5 -0
  84. package/dist/core/policy-evaluator.d.ts.map +1 -0
  85. package/dist/core/policy-evaluator.js +161 -0
  86. package/dist/core/policy-evaluator.js.map +1 -0
  87. package/dist/core/skill-resolver.d.ts +8 -0
  88. package/dist/core/skill-resolver.d.ts.map +1 -0
  89. package/dist/core/skill-resolver.js +17 -0
  90. package/dist/core/skill-resolver.js.map +1 -0
  91. package/dist/core/skills.d.ts +4 -0
  92. package/dist/core/skills.d.ts.map +1 -0
  93. package/dist/core/skills.js +14 -0
  94. package/dist/core/skills.js.map +1 -0
  95. package/dist/core/types.d.ts +117 -0
  96. package/dist/core/types.d.ts.map +1 -0
  97. package/dist/core/types.js +6 -0
  98. package/dist/core/types.js.map +1 -0
  99. package/dist/detector/index.d.ts +7 -0
  100. package/dist/detector/index.d.ts.map +1 -0
  101. package/dist/detector/index.js +57 -0
  102. package/dist/detector/index.js.map +1 -0
  103. package/dist/diff/index.d.ts +10 -0
  104. package/dist/diff/index.d.ts.map +1 -0
  105. package/dist/diff/index.js +26 -0
  106. package/dist/diff/index.js.map +1 -0
  107. package/dist/explainer/index.d.ts +3 -0
  108. package/dist/explainer/index.d.ts.map +1 -0
  109. package/dist/explainer/index.js +85 -0
  110. package/dist/explainer/index.js.map +1 -0
  111. package/dist/generator/file-policies.d.ts +2 -0
  112. package/dist/generator/file-policies.d.ts.map +1 -0
  113. package/dist/generator/file-policies.js +4 -0
  114. package/dist/generator/file-policies.js.map +1 -0
  115. package/dist/generator/index.d.ts +5 -0
  116. package/dist/generator/index.d.ts.map +1 -0
  117. package/dist/generator/index.js +10 -0
  118. package/dist/generator/index.js.map +1 -0
  119. package/dist/generator/renderers/agent-md.d.ts +5 -0
  120. package/dist/generator/renderers/agent-md.d.ts.map +1 -0
  121. package/dist/generator/renderers/agent-md.js +66 -0
  122. package/dist/generator/renderers/agent-md.js.map +1 -0
  123. package/dist/generator/renderers/agents-md.d.ts +4 -0
  124. package/dist/generator/renderers/agents-md.d.ts.map +1 -0
  125. package/dist/generator/renderers/agents-md.js +86 -0
  126. package/dist/generator/renderers/agents-md.js.map +1 -0
  127. package/dist/generator/renderers/claude-md.d.ts +4 -0
  128. package/dist/generator/renderers/claude-md.d.ts.map +1 -0
  129. package/dist/generator/renderers/claude-md.js +68 -0
  130. package/dist/generator/renderers/claude-md.js.map +1 -0
  131. package/dist/generator/renderers/codex-config.d.ts +4 -0
  132. package/dist/generator/renderers/codex-config.d.ts.map +1 -0
  133. package/dist/generator/renderers/codex-config.js +145 -0
  134. package/dist/generator/renderers/codex-config.js.map +1 -0
  135. package/dist/generator/renderers/codex-skill-md.d.ts +4 -0
  136. package/dist/generator/renderers/codex-skill-md.d.ts.map +1 -0
  137. package/dist/generator/renderers/codex-skill-md.js +47 -0
  138. package/dist/generator/renderers/codex-skill-md.js.map +1 -0
  139. package/dist/generator/renderers/settings-json.d.ts +5 -0
  140. package/dist/generator/renderers/settings-json.d.ts.map +1 -0
  141. package/dist/generator/renderers/settings-json.js +100 -0
  142. package/dist/generator/renderers/settings-json.js.map +1 -0
  143. package/dist/generator/renderers/skill-md.d.ts +4 -0
  144. package/dist/generator/renderers/skill-md.d.ts.map +1 -0
  145. package/dist/generator/renderers/skill-md.js +44 -0
  146. package/dist/generator/renderers/skill-md.js.map +1 -0
  147. package/dist/generator/state.d.ts +14 -0
  148. package/dist/generator/state.d.ts.map +1 -0
  149. package/dist/generator/state.js +76 -0
  150. package/dist/generator/state.js.map +1 -0
  151. package/dist/generator/targets/claude.d.ts +3 -0
  152. package/dist/generator/targets/claude.d.ts.map +1 -0
  153. package/dist/generator/targets/claude.js +24 -0
  154. package/dist/generator/targets/claude.js.map +1 -0
  155. package/dist/generator/targets/codex.d.ts +3 -0
  156. package/dist/generator/targets/codex.d.ts.map +1 -0
  157. package/dist/generator/targets/codex.js +19 -0
  158. package/dist/generator/targets/codex.js.map +1 -0
  159. package/dist/generator/targets/index.d.ts +4 -0
  160. package/dist/generator/targets/index.d.ts.map +1 -0
  161. package/dist/generator/targets/index.js +10 -0
  162. package/dist/generator/targets/index.js.map +1 -0
  163. package/dist/generator/targets/types.d.ts +8 -0
  164. package/dist/generator/targets/types.d.ts.map +1 -0
  165. package/dist/generator/targets/types.js +2 -0
  166. package/dist/generator/targets/types.js.map +1 -0
  167. package/dist/generator/types.d.ts +11 -0
  168. package/dist/generator/types.d.ts.map +1 -0
  169. package/dist/generator/types.js +2 -0
  170. package/dist/generator/types.js.map +1 -0
  171. package/dist/generator/writer.d.ts +5 -0
  172. package/dist/generator/writer.d.ts.map +1 -0
  173. package/dist/generator/writer.js +14 -0
  174. package/dist/generator/writer.js.map +1 -0
  175. package/dist/importer/index.d.ts +12 -0
  176. package/dist/importer/index.d.ts.map +1 -0
  177. package/dist/importer/index.js +295 -0
  178. package/dist/importer/index.js.map +1 -0
  179. package/dist/index.d.ts +3 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +25 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/manifest/compat.d.ts +6 -0
  184. package/dist/manifest/compat.d.ts.map +1 -0
  185. package/dist/manifest/compat.js +56 -0
  186. package/dist/manifest/compat.js.map +1 -0
  187. package/dist/manifest/defaults.d.ts +4 -0
  188. package/dist/manifest/defaults.d.ts.map +1 -0
  189. package/dist/manifest/defaults.js +28 -0
  190. package/dist/manifest/defaults.js.map +1 -0
  191. package/dist/manifest/normalize.d.ts +14 -0
  192. package/dist/manifest/normalize.d.ts.map +1 -0
  193. package/dist/manifest/normalize.js +353 -0
  194. package/dist/manifest/normalize.js.map +1 -0
  195. package/dist/manifest/reader.d.ts +7 -0
  196. package/dist/manifest/reader.d.ts.map +1 -0
  197. package/dist/manifest/reader.js +36 -0
  198. package/dist/manifest/reader.js.map +1 -0
  199. package/dist/manifest/schema-validator.d.ts +13 -0
  200. package/dist/manifest/schema-validator.d.ts.map +1 -0
  201. package/dist/manifest/schema-validator.js +33 -0
  202. package/dist/manifest/schema-validator.js.map +1 -0
  203. package/dist/manifest/types.d.ts +150 -0
  204. package/dist/manifest/types.d.ts.map +1 -0
  205. package/dist/manifest/types.js +4 -0
  206. package/dist/manifest/types.js.map +1 -0
  207. package/dist/manifest/writer.d.ts +3 -0
  208. package/dist/manifest/writer.d.ts.map +1 -0
  209. package/dist/manifest/writer.js +10 -0
  210. package/dist/manifest/writer.js.map +1 -0
  211. package/dist/presets/index.d.ts +6 -0
  212. package/dist/presets/index.d.ts.map +1 -0
  213. package/dist/presets/index.js +56 -0
  214. package/dist/presets/index.js.map +1 -0
  215. package/dist/presets/types.d.ts +12 -0
  216. package/dist/presets/types.d.ts.map +1 -0
  217. package/dist/presets/types.js +2 -0
  218. package/dist/presets/types.js.map +1 -0
  219. package/dist/renderers/claude/agent-md.d.ts +5 -0
  220. package/dist/renderers/claude/agent-md.d.ts.map +1 -0
  221. package/dist/renderers/claude/agent-md.js +45 -0
  222. package/dist/renderers/claude/agent-md.js.map +1 -0
  223. package/dist/renderers/claude/docs.d.ts +5 -0
  224. package/dist/renderers/claude/docs.d.ts.map +1 -0
  225. package/dist/renderers/claude/docs.js +155 -0
  226. package/dist/renderers/claude/docs.js.map +1 -0
  227. package/dist/renderers/claude/index.d.ts +5 -0
  228. package/dist/renderers/claude/index.d.ts.map +1 -0
  229. package/dist/renderers/claude/index.js +23 -0
  230. package/dist/renderers/claude/index.js.map +1 -0
  231. package/dist/renderers/claude/policy-mapper.d.ts +10 -0
  232. package/dist/renderers/claude/policy-mapper.d.ts.map +1 -0
  233. package/dist/renderers/claude/policy-mapper.js +40 -0
  234. package/dist/renderers/claude/policy-mapper.js.map +1 -0
  235. package/dist/renderers/claude/settings.d.ts +5 -0
  236. package/dist/renderers/claude/settings.d.ts.map +1 -0
  237. package/dist/renderers/claude/settings.js +77 -0
  238. package/dist/renderers/claude/settings.js.map +1 -0
  239. package/dist/renderers/claude/skill-map.d.ts +16 -0
  240. package/dist/renderers/claude/skill-map.d.ts.map +1 -0
  241. package/dist/renderers/claude/skill-map.js +39 -0
  242. package/dist/renderers/claude/skill-map.js.map +1 -0
  243. package/dist/renderers/claude/skill-md.d.ts +4 -0
  244. package/dist/renderers/claude/skill-md.d.ts.map +1 -0
  245. package/dist/renderers/claude/skill-md.js +35 -0
  246. package/dist/renderers/claude/skill-md.js.map +1 -0
  247. package/dist/renderers/claude/tools.d.ts +4 -0
  248. package/dist/renderers/claude/tools.d.ts.map +1 -0
  249. package/dist/renderers/claude/tools.js +12 -0
  250. package/dist/renderers/claude/tools.js.map +1 -0
  251. package/dist/renderers/index.d.ts +3 -0
  252. package/dist/renderers/index.d.ts.map +1 -0
  253. package/dist/renderers/index.js +2 -0
  254. package/dist/renderers/index.js.map +1 -0
  255. package/dist/renderers/types.d.ts +12 -0
  256. package/dist/renderers/types.d.ts.map +1 -0
  257. package/dist/renderers/types.js +2 -0
  258. package/dist/renderers/types.js.map +1 -0
  259. package/dist/team-templates/policies.d.ts +4 -0
  260. package/dist/team-templates/policies.d.ts.map +1 -0
  261. package/dist/team-templates/policies.js +69 -0
  262. package/dist/team-templates/policies.js.map +1 -0
  263. package/dist/team-templates/presets.d.ts +6 -0
  264. package/dist/team-templates/presets.d.ts.map +1 -0
  265. package/dist/team-templates/presets.js +14 -0
  266. package/dist/team-templates/presets.js.map +1 -0
  267. package/dist/team-templates/roles.d.ts +22 -0
  268. package/dist/team-templates/roles.d.ts.map +1 -0
  269. package/dist/team-templates/roles.js +117 -0
  270. package/dist/team-templates/roles.js.map +1 -0
  271. package/dist/types/manifest.d.ts +11 -0
  272. package/dist/types/manifest.d.ts.map +1 -0
  273. package/dist/types/manifest.js +16 -0
  274. package/dist/types/manifest.js.map +1 -0
  275. package/dist/utils/chalk-helpers.d.ts +18 -0
  276. package/dist/utils/chalk-helpers.d.ts.map +1 -0
  277. package/dist/utils/chalk-helpers.js +51 -0
  278. package/dist/utils/chalk-helpers.js.map +1 -0
  279. package/dist/utils/prompts.d.ts +28 -0
  280. package/dist/utils/prompts.d.ts.map +1 -0
  281. package/dist/utils/prompts.js +51 -0
  282. package/dist/utils/prompts.js.map +1 -0
  283. package/dist/validator/checks/handoff-graph.d.ts +5 -0
  284. package/dist/validator/checks/handoff-graph.d.ts.map +1 -0
  285. package/dist/validator/checks/handoff-graph.js +65 -0
  286. package/dist/validator/checks/handoff-graph.js.map +1 -0
  287. package/dist/validator/checks/instruction-blocks.d.ts +5 -0
  288. package/dist/validator/checks/instruction-blocks.d.ts.map +1 -0
  289. package/dist/validator/checks/instruction-blocks.js +45 -0
  290. package/dist/validator/checks/instruction-blocks.js.map +1 -0
  291. package/dist/validator/checks/role-warnings.d.ts +5 -0
  292. package/dist/validator/checks/role-warnings.d.ts.map +1 -0
  293. package/dist/validator/checks/role-warnings.js +50 -0
  294. package/dist/validator/checks/role-warnings.js.map +1 -0
  295. package/dist/validator/checks/security-baseline.d.ts +3 -0
  296. package/dist/validator/checks/security-baseline.d.ts.map +1 -0
  297. package/dist/validator/checks/security-baseline.js +73 -0
  298. package/dist/validator/checks/security-baseline.js.map +1 -0
  299. package/dist/validator/checks/tool-conflicts.d.ts +5 -0
  300. package/dist/validator/checks/tool-conflicts.d.ts.map +1 -0
  301. package/dist/validator/checks/tool-conflicts.js +33 -0
  302. package/dist/validator/checks/tool-conflicts.js.map +1 -0
  303. package/dist/validator/index.d.ts +5 -0
  304. package/dist/validator/index.d.ts.map +1 -0
  305. package/dist/validator/index.js +28 -0
  306. package/dist/validator/index.js.map +1 -0
  307. package/dist/validator/reporter.d.ts +4 -0
  308. package/dist/validator/reporter.d.ts.map +1 -0
  309. package/dist/validator/reporter.js +76 -0
  310. package/dist/validator/reporter.js.map +1 -0
  311. package/dist/validator/types.d.ts +10 -0
  312. package/dist/validator/types.d.ts.map +1 -0
  313. package/dist/validator/types.js +2 -0
  314. package/dist/validator/types.js.map +1 -0
  315. package/dist/wizard/index.d.ts +7 -0
  316. package/dist/wizard/index.d.ts.map +1 -0
  317. package/dist/wizard/index.js +57 -0
  318. package/dist/wizard/index.js.map +1 -0
  319. package/dist/wizard/steps/agent-customization.d.ts +5 -0
  320. package/dist/wizard/steps/agent-customization.d.ts.map +1 -0
  321. package/dist/wizard/steps/agent-customization.js +68 -0
  322. package/dist/wizard/steps/agent-customization.js.map +1 -0
  323. package/dist/wizard/steps/confirm-generate.d.ts +3 -0
  324. package/dist/wizard/steps/confirm-generate.d.ts.map +1 -0
  325. package/dist/wizard/steps/confirm-generate.js +19 -0
  326. package/dist/wizard/steps/confirm-generate.js.map +1 -0
  327. package/dist/wizard/steps/custom-team.d.ts +3 -0
  328. package/dist/wizard/steps/custom-team.d.ts.map +1 -0
  329. package/dist/wizard/steps/custom-team.js +17 -0
  330. package/dist/wizard/steps/custom-team.js.map +1 -0
  331. package/dist/wizard/steps/project-context.d.ts +6 -0
  332. package/dist/wizard/steps/project-context.d.ts.map +1 -0
  333. package/dist/wizard/steps/project-context.js +24 -0
  334. package/dist/wizard/steps/project-context.js.map +1 -0
  335. package/dist/wizard/steps/team-selection.d.ts +5 -0
  336. package/dist/wizard/steps/team-selection.d.ts.map +1 -0
  337. package/dist/wizard/steps/team-selection.js +44 -0
  338. package/dist/wizard/steps/team-selection.js.map +1 -0
  339. package/package.json +56 -0
  340. package/schema/teamcast.schema.json +580 -0
  341. package/templates/presets/feature-team.yaml +77 -0
  342. package/templates/presets/research-and-build.yaml +69 -0
  343. package/templates/presets/secure-dev.yaml +93 -0
  344. package/templates/presets/solo-dev.yaml +32 -0
@@ -0,0 +1,580 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://teamcast.dev/schema/v2.json",
4
+ "title": "TeamCast Manifest",
5
+ "description": "Schema for teamcast.yaml and built-in preset manifests",
6
+ "type": "object",
7
+ "required": ["version", "project", "agents"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "version": {
11
+ "type": "string",
12
+ "enum": ["1", "2"],
13
+ "description": "Manifest format version"
14
+ },
15
+ "project": {
16
+ "type": "object",
17
+ "required": ["name"],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "name": {
21
+ "type": "string",
22
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
23
+ },
24
+ "preset": {
25
+ "type": "string"
26
+ },
27
+ "description": {
28
+ "type": "string"
29
+ }
30
+ }
31
+ },
32
+ "agents": {
33
+ "type": "object",
34
+ "minProperties": 1,
35
+ "patternProperties": {
36
+ "^[a-z][a-z0-9-]*$": {
37
+ "$ref": "#/definitions/AgentDefinition"
38
+ }
39
+ },
40
+ "additionalProperties": false
41
+ },
42
+ "policies": {
43
+ "$ref": "#/definitions/PoliciesConfig"
44
+ },
45
+ "settings": {
46
+ "$ref": "#/definitions/GenerationSettings"
47
+ },
48
+ "preset_meta": {
49
+ "$ref": "#/definitions/PresetMeta"
50
+ }
51
+ },
52
+ "definitions": {
53
+ "ModelAlias": {
54
+ "type": "string",
55
+ "enum": ["opus", "sonnet", "haiku", "inherit"]
56
+ },
57
+ "AgentSkill": {
58
+ "type": "string",
59
+ "enum": ["read_files", "write_files", "execute", "search", "web", "delegate", "interact", "notebook"]
60
+ },
61
+ "CanonicalTool": {
62
+ "type": "string",
63
+ "enum": [
64
+ "Read", "Write", "Edit", "MultiEdit",
65
+ "Grep", "Glob",
66
+ "Bash",
67
+ "WebFetch", "WebSearch",
68
+ "Agent"
69
+ ]
70
+ },
71
+ "CompatTool": {
72
+ "type": "string",
73
+ "enum": [
74
+ "Read", "Write", "Edit", "MultiEdit",
75
+ "Grep", "Glob",
76
+ "Bash",
77
+ "WebFetch", "WebSearch",
78
+ "Agent", "Task"
79
+ ]
80
+ },
81
+ "PermissionMode": {
82
+ "type": "string",
83
+ "enum": ["default", "acceptEdits", "bypassPermissions", "plan", "dontAsk"]
84
+ },
85
+ "InstructionBlockKind": {
86
+ "type": "string",
87
+ "enum": ["behavior", "workflow", "safety", "style", "delegation", "context", "custom"]
88
+ },
89
+ "PolicyAssertion": {
90
+ "oneOf": [
91
+ { "type": "object", "required": ["rule"], "properties": { "rule": { "const": "require_sandbox_with_execute" } }, "additionalProperties": false },
92
+ { "type": "object", "required": ["rule", "skills"], "properties": { "rule": { "const": "forbid_skill_combination" }, "skills": { "type": "array", "items": { "$ref": "#/definitions/AgentSkill" }, "minItems": 2 } }, "additionalProperties": false },
93
+ { "type": "object", "required": ["rule", "skill"], "properties": { "rule": { "const": "require_skill" }, "skill": { "$ref": "#/definitions/AgentSkill" } }, "additionalProperties": false },
94
+ { "type": "object", "required": ["rule", "agent", "skill"], "properties": { "rule": { "const": "deny_skill_for_role" }, "agent": { "type": "string" }, "skill": { "$ref": "#/definitions/AgentSkill" } }, "additionalProperties": false },
95
+ { "type": "object", "required": ["rule", "count"], "properties": { "rule": { "const": "max_agents" }, "count": { "type": "integer", "minimum": 1 } }, "additionalProperties": false },
96
+ { "type": "object", "required": ["rule", "kind"], "properties": { "rule": { "const": "require_instruction_block" }, "kind": { "type": "string" } }, "additionalProperties": false },
97
+ { "type": "object", "required": ["rule"], "properties": { "rule": { "const": "require_delegation_chain" } }, "additionalProperties": false },
98
+ { "type": "object", "required": ["rule"], "properties": { "rule": { "const": "no_unrestricted_execute" } }, "additionalProperties": false }
99
+ ]
100
+ },
101
+ "CapabilityTraitName": {
102
+ "type": "string",
103
+ "enum": [
104
+ "base-read",
105
+ "file-authoring",
106
+ "command-execution",
107
+ "web-research",
108
+ "delegation",
109
+ "no-file-edits",
110
+ "no-commands",
111
+ "no-web"
112
+ ]
113
+ },
114
+ "InstructionFragmentName": {
115
+ "type": "string",
116
+ "enum": [
117
+ "coordination-core",
118
+ "delegate-first",
119
+ "planning-core",
120
+ "planning-read-only",
121
+ "research-core",
122
+ "research-citation",
123
+ "research-no-file-edits",
124
+ "development-core",
125
+ "development-workflow",
126
+ "tester-core",
127
+ "tester-read-only",
128
+ "review-core",
129
+ "review-feedback",
130
+ "security-audit-core",
131
+ "security-audit-severity",
132
+ "research-handoff",
133
+ "secure-planning",
134
+ "secure-development",
135
+ "secure-development-tests",
136
+ "security-review-gate",
137
+ "post-audit-review",
138
+ "solo-dev-core",
139
+ "solo-dev-workflow",
140
+ "solo-dev-style",
141
+ "feature-orchestrator-workflow",
142
+ "feature-orchestrator-output",
143
+ "feature-planner-workflow",
144
+ "feature-planner-read-only",
145
+ "feature-developer-core",
146
+ "feature-developer-workflow",
147
+ "feature-developer-summary",
148
+ "feature-reviewer-checklist",
149
+ "feature-reviewer-style",
150
+ "research-orchestrator-core",
151
+ "research-orchestrator-workflow",
152
+ "research-orchestrator-output",
153
+ "research-planner-core",
154
+ "research-planner-constraints",
155
+ "research-developer-core",
156
+ "research-developer-tests",
157
+ "secure-orchestrator-core",
158
+ "secure-orchestrator-workflow",
159
+ "secure-orchestrator-gate",
160
+ "post-audit-review-core"
161
+ ]
162
+ },
163
+ "PolicyFragmentName": {
164
+ "type": "string",
165
+ "enum": [
166
+ "allow-npm-run",
167
+ "allow-npm-test",
168
+ "allow-git-read",
169
+ "allow-git-write",
170
+ "allow-npx",
171
+ "allow-npm-audit",
172
+ "ask-git-push",
173
+ "deny-destructive-shell",
174
+ "deny-network-downloads",
175
+ "deny-dynamic-exec",
176
+ "deny-env-files",
177
+ "sandbox-default"
178
+ ]
179
+ },
180
+ "AbstractPermission": {
181
+ "type": "string",
182
+ "enum": [
183
+ "project.commands",
184
+ "tests",
185
+ "git.read",
186
+ "git.write",
187
+ "package.exec",
188
+ "security.audit",
189
+ "git.push",
190
+ "destructive-shell",
191
+ "downloads",
192
+ "dynamic-exec",
193
+ "env.write"
194
+ ]
195
+ },
196
+ "InstructionBlock": {
197
+ "type": "object",
198
+ "required": ["kind", "content"],
199
+ "additionalProperties": false,
200
+ "properties": {
201
+ "kind": {
202
+ "$ref": "#/definitions/InstructionBlockKind"
203
+ },
204
+ "title": {
205
+ "type": "string"
206
+ },
207
+ "content": {
208
+ "type": "string",
209
+ "minLength": 1
210
+ }
211
+ }
212
+ },
213
+ "LegacyToolsConfig": {
214
+ "type": "object",
215
+ "anyOf": [
216
+ {
217
+ "required": ["allow"],
218
+ "properties": {
219
+ "allow": {
220
+ "type": "array",
221
+ "items": { "$ref": "#/definitions/CompatTool" },
222
+ "minItems": 1
223
+ },
224
+ "deny": {
225
+ "type": "array",
226
+ "items": { "$ref": "#/definitions/CompatTool" }
227
+ }
228
+ },
229
+ "additionalProperties": false
230
+ },
231
+ {
232
+ "required": ["deny"],
233
+ "properties": {
234
+ "deny": {
235
+ "type": "array",
236
+ "items": { "$ref": "#/definitions/CompatTool" },
237
+ "minItems": 1
238
+ }
239
+ },
240
+ "additionalProperties": false
241
+ }
242
+ ]
243
+ },
244
+ "McpServerConfig": {
245
+ "type": "object",
246
+ "required": ["name", "url"],
247
+ "additionalProperties": false,
248
+ "properties": {
249
+ "name": { "type": "string" },
250
+ "url": { "type": "string", "format": "uri" }
251
+ }
252
+ },
253
+ "ClaudeAgentConfigV2": {
254
+ "type": "object",
255
+ "required": ["description"],
256
+ "additionalProperties": false,
257
+ "properties": {
258
+ "description": { "type": "string", "minLength": 1 },
259
+ "model": { "$ref": "#/definitions/ModelAlias" },
260
+ "capability_traits": {
261
+ "type": "array",
262
+ "items": { "$ref": "#/definitions/CapabilityTraitName" }
263
+ },
264
+ "tools": {
265
+ "type": "array",
266
+ "items": {
267
+ "anyOf": [
268
+ { "$ref": "#/definitions/AgentSkill" },
269
+ { "$ref": "#/definitions/CanonicalTool" }
270
+ ]
271
+ },
272
+ "minItems": 1
273
+ },
274
+ "disallowed_tools": {
275
+ "type": "array",
276
+ "items": {
277
+ "anyOf": [
278
+ { "$ref": "#/definitions/AgentSkill" },
279
+ { "$ref": "#/definitions/CanonicalTool" }
280
+ ]
281
+ }
282
+ },
283
+ "skills": {
284
+ "type": "array",
285
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
286
+ },
287
+ "max_turns": {
288
+ "type": "integer",
289
+ "minimum": 1
290
+ },
291
+ "mcp_servers": {
292
+ "type": "array",
293
+ "items": { "$ref": "#/definitions/McpServerConfig" }
294
+ },
295
+ "permission_mode": {
296
+ "$ref": "#/definitions/PermissionMode"
297
+ },
298
+ "instruction_fragments": {
299
+ "type": "array",
300
+ "items": { "$ref": "#/definitions/InstructionFragmentName" }
301
+ },
302
+ "instruction_blocks": {
303
+ "type": "array",
304
+ "items": { "$ref": "#/definitions/InstructionBlock" }
305
+ },
306
+ "background": {
307
+ "type": "boolean"
308
+ }
309
+ }
310
+ },
311
+ "ClaudeAgentConfigV1": {
312
+ "type": "object",
313
+ "required": ["description"],
314
+ "additionalProperties": false,
315
+ "properties": {
316
+ "description": { "type": "string", "minLength": 1 },
317
+ "model": { "$ref": "#/definitions/ModelAlias" },
318
+ "tools": {
319
+ "type": "array",
320
+ "items": { "$ref": "#/definitions/CanonicalTool" },
321
+ "minItems": 1
322
+ },
323
+ "disallowed_tools": {
324
+ "type": "array",
325
+ "items": { "$ref": "#/definitions/CanonicalTool" }
326
+ },
327
+ "skills": {
328
+ "type": "array",
329
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
330
+ },
331
+ "max_turns": {
332
+ "type": "integer",
333
+ "minimum": 1
334
+ },
335
+ "mcp_servers": {
336
+ "type": "array",
337
+ "items": { "$ref": "#/definitions/McpServerConfig" }
338
+ },
339
+ "permission_mode": {
340
+ "$ref": "#/definitions/PermissionMode"
341
+ },
342
+ "instructions": {
343
+ "type": "string"
344
+ },
345
+ "background": {
346
+ "type": "boolean"
347
+ }
348
+ }
349
+ },
350
+ "ForgeAgentMetadata": {
351
+ "type": "object",
352
+ "additionalProperties": false,
353
+ "properties": {
354
+ "handoffs": {
355
+ "type": "array",
356
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
357
+ },
358
+ "role": { "type": "string" },
359
+ "template": { "type": "string" }
360
+ }
361
+ },
362
+ "CanonicalAgentConfigV2": {
363
+ "type": "object",
364
+ "required": ["claude"],
365
+ "additionalProperties": false,
366
+ "properties": {
367
+ "claude": { "$ref": "#/definitions/ClaudeAgentConfigV2" },
368
+ "forge": { "$ref": "#/definitions/ForgeAgentMetadata" }
369
+ }
370
+ },
371
+ "CanonicalAgentConfigV1": {
372
+ "type": "object",
373
+ "required": ["claude"],
374
+ "additionalProperties": false,
375
+ "properties": {
376
+ "claude": { "$ref": "#/definitions/ClaudeAgentConfigV1" },
377
+ "forge": { "$ref": "#/definitions/ForgeAgentMetadata" }
378
+ }
379
+ },
380
+ "LegacyAgentConfig": {
381
+ "type": "object",
382
+ "required": ["description"],
383
+ "additionalProperties": false,
384
+ "properties": {
385
+ "description": { "type": "string", "minLength": 1 },
386
+ "model": { "$ref": "#/definitions/ModelAlias" },
387
+ "tools": { "$ref": "#/definitions/LegacyToolsConfig" },
388
+ "skills": {
389
+ "type": "array",
390
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
391
+ },
392
+ "handoffs": {
393
+ "type": "array",
394
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
395
+ },
396
+ "max_turns": {
397
+ "type": "integer",
398
+ "minimum": 1
399
+ },
400
+ "mcp_servers": {
401
+ "type": "array",
402
+ "items": { "$ref": "#/definitions/McpServerConfig" }
403
+ },
404
+ "permission_mode": {
405
+ "$ref": "#/definitions/PermissionMode"
406
+ },
407
+ "behavior": {
408
+ "type": "string"
409
+ },
410
+ "background": {
411
+ "type": "boolean"
412
+ }
413
+ }
414
+ },
415
+ "AgentDefinition": {
416
+ "anyOf": [
417
+ { "$ref": "#/definitions/CanonicalAgentConfigV2" },
418
+ { "$ref": "#/definitions/CanonicalAgentConfigV1" },
419
+ { "$ref": "#/definitions/LegacyAgentConfig" }
420
+ ]
421
+ },
422
+ "PermissionsConfig": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "properties": {
426
+ "allow": {
427
+ "type": "array",
428
+ "items": {
429
+ "anyOf": [
430
+ { "$ref": "#/definitions/AbstractPermission" },
431
+ { "type": "string" }
432
+ ]
433
+ }
434
+ },
435
+ "ask": {
436
+ "type": "array",
437
+ "items": {
438
+ "anyOf": [
439
+ { "$ref": "#/definitions/AbstractPermission" },
440
+ { "type": "string" }
441
+ ]
442
+ }
443
+ },
444
+ "deny": {
445
+ "type": "array",
446
+ "items": {
447
+ "anyOf": [
448
+ { "$ref": "#/definitions/AbstractPermission" },
449
+ { "type": "string" }
450
+ ]
451
+ }
452
+ },
453
+ "default_mode": {
454
+ "type": "string",
455
+ "enum": ["default", "acceptEdits"]
456
+ },
457
+ "rules": {
458
+ "type": "object",
459
+ "additionalProperties": false,
460
+ "properties": {
461
+ "allow": {
462
+ "type": "array",
463
+ "items": { "type": "string" }
464
+ },
465
+ "ask": {
466
+ "type": "array",
467
+ "items": { "type": "string" }
468
+ },
469
+ "deny": {
470
+ "type": "array",
471
+ "items": { "type": "string" }
472
+ }
473
+ }
474
+ }
475
+ }
476
+ },
477
+ "SandboxConfig": {
478
+ "type": "object",
479
+ "additionalProperties": false,
480
+ "properties": {
481
+ "enabled": { "type": "boolean" },
482
+ "auto_allow_bash": { "type": "boolean" },
483
+ "excluded_commands": {
484
+ "type": "array",
485
+ "items": { "type": "string" }
486
+ },
487
+ "network": {
488
+ "type": "object",
489
+ "additionalProperties": false,
490
+ "properties": {
491
+ "allow_unix_sockets": {
492
+ "type": "array",
493
+ "items": { "type": "string" }
494
+ },
495
+ "allow_local_binding": {
496
+ "type": "boolean"
497
+ }
498
+ }
499
+ }
500
+ }
501
+ },
502
+ "HookEntry": {
503
+ "type": "object",
504
+ "required": ["matcher", "command"],
505
+ "additionalProperties": false,
506
+ "properties": {
507
+ "matcher": { "type": "string" },
508
+ "command": { "type": "string" },
509
+ "async": { "type": "boolean" }
510
+ }
511
+ },
512
+ "HooksConfig": {
513
+ "type": "object",
514
+ "additionalProperties": false,
515
+ "properties": {
516
+ "pre_tool_use": {
517
+ "type": "array",
518
+ "items": { "$ref": "#/definitions/HookEntry" }
519
+ },
520
+ "post_tool_use": {
521
+ "type": "array",
522
+ "items": { "$ref": "#/definitions/HookEntry" }
523
+ },
524
+ "notification": {
525
+ "type": "array",
526
+ "items": { "$ref": "#/definitions/HookEntry" }
527
+ }
528
+ }
529
+ },
530
+ "NetworkConfig": {
531
+ "type": "object",
532
+ "additionalProperties": false,
533
+ "properties": {
534
+ "allowed_domains": {
535
+ "type": "array",
536
+ "items": { "type": "string" }
537
+ }
538
+ }
539
+ },
540
+ "PoliciesConfig": {
541
+ "type": "object",
542
+ "additionalProperties": false,
543
+ "properties": {
544
+ "fragments": {
545
+ "type": "array",
546
+ "items": { "$ref": "#/definitions/PolicyFragmentName" }
547
+ },
548
+ "permissions": { "$ref": "#/definitions/PermissionsConfig" },
549
+ "sandbox": { "$ref": "#/definitions/SandboxConfig" },
550
+ "hooks": { "$ref": "#/definitions/HooksConfig" },
551
+ "network": { "$ref": "#/definitions/NetworkConfig" },
552
+ "assertions": {
553
+ "type": "array",
554
+ "items": { "$ref": "#/definitions/PolicyAssertion" }
555
+ }
556
+ }
557
+ },
558
+ "GenerationSettings": {
559
+ "type": "object",
560
+ "additionalProperties": false,
561
+ "properties": {
562
+ "default_model": { "$ref": "#/definitions/ModelAlias" },
563
+ "generate_docs": { "type": "boolean" },
564
+ "generate_local_settings": { "type": "boolean" }
565
+ }
566
+ },
567
+ "PresetMeta": {
568
+ "type": "object",
569
+ "additionalProperties": false,
570
+ "properties": {
571
+ "author": { "type": "string" },
572
+ "tags": {
573
+ "type": "array",
574
+ "items": { "type": "string" }
575
+ },
576
+ "min_version": { "type": "string" }
577
+ }
578
+ }
579
+ }
580
+ }
@@ -0,0 +1,77 @@
1
+ version: "2"
2
+ preset_meta:
3
+ tags: [team, feature, orchestration]
4
+ min_version: "2"
5
+ project:
6
+ name: placeholder
7
+ preset: feature-team
8
+ description: Classic feature development team with orchestration, planning, coding, and review.
9
+
10
+ agents:
11
+ orchestrator:
12
+ claude:
13
+ description: Coordinates the team. Analyzes tasks, decomposes them into subtasks, and delegates to the right specialist. Never writes code directly.
14
+ model: opus
15
+ capability_traits: [base-read, delegation, no-file-edits, no-commands, no-web]
16
+ skills: [triage, routing]
17
+ max_turns: 30
18
+ instruction_blocks:
19
+ - kind: behavior
20
+ content: |
21
+ You are the team coordinator. Your job is to analyze the user's request, break it down into subtasks, and delegate each subtask to the appropriate specialist.
22
+ instruction_fragments:
23
+ - feature-orchestrator-workflow
24
+ - feature-orchestrator-output
25
+ forge:
26
+ handoffs: [planner, developer, reviewer]
27
+
28
+ planner:
29
+ claude:
30
+ description: Reads the codebase and produces an implementation plan. Does not write code.
31
+ model: sonnet
32
+ capability_traits: [base-read, web-research, no-file-edits, no-commands]
33
+ skills: [architecture-analysis, planning]
34
+ instruction_blocks:
35
+ - kind: behavior
36
+ content: |
37
+ You are the planner. Your job is to deeply understand the codebase and produce a clear, step-by-step implementation plan.
38
+ instruction_fragments:
39
+ - feature-planner-workflow
40
+ - feature-planner-read-only
41
+
42
+ developer:
43
+ claude:
44
+ description: Implements code according to the plan. Writes tests. Does not access the internet.
45
+ model: sonnet
46
+ capability_traits: [base-read, file-authoring, command-execution, no-web]
47
+ skills: [test-first, clean-code]
48
+ instruction_fragments:
49
+ - feature-developer-core
50
+ - feature-developer-workflow
51
+ - feature-developer-summary
52
+
53
+ reviewer:
54
+ claude:
55
+ description: Reviews code quality, security, and style. Does not modify files - only provides recommendations.
56
+ model: sonnet
57
+ capability_traits: [base-read, command-execution, no-file-edits, no-web]
58
+ skills: [code-review, security-check]
59
+ instruction_blocks:
60
+ - kind: behavior
61
+ content: |
62
+ You are the reviewer. Your job is to review the implementation for quality, correctness, and security.
63
+ instruction_fragments:
64
+ - feature-reviewer-checklist
65
+ - feature-reviewer-style
66
+
67
+ policies:
68
+ fragments:
69
+ - allow-npm-run
70
+ - allow-npm-test
71
+ - allow-git-read
72
+ - allow-git-write
73
+ - ask-git-push
74
+ - deny-destructive-shell
75
+ - deny-network-downloads
76
+ - deny-env-files
77
+ - sandbox-default