@kindgi/cli 0.0.0-bootstrap.0 → 0.1.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 (496) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +690 -1
  3. package/dist/build/apt.d.ts +16 -0
  4. package/dist/build/apt.d.ts.map +1 -0
  5. package/dist/build/apt.js +50 -0
  6. package/dist/build/apt.js.map +1 -0
  7. package/dist/build/bundle.d.ts +45 -0
  8. package/dist/build/bundle.d.ts.map +1 -0
  9. package/dist/build/bundle.js +121 -0
  10. package/dist/build/bundle.js.map +1 -0
  11. package/dist/build/containerfile.d.ts +27 -0
  12. package/dist/build/containerfile.d.ts.map +1 -0
  13. package/dist/build/containerfile.js +196 -0
  14. package/dist/build/containerfile.js.map +1 -0
  15. package/dist/build/context-files.d.ts +24 -0
  16. package/dist/build/context-files.d.ts.map +1 -0
  17. package/dist/build/context-files.js +99 -0
  18. package/dist/build/context-files.js.map +1 -0
  19. package/dist/build/defaults.d.ts +66 -0
  20. package/dist/build/defaults.d.ts.map +1 -0
  21. package/dist/build/defaults.js +586 -0
  22. package/dist/build/defaults.js.map +1 -0
  23. package/dist/build/envelope.d.ts +72 -0
  24. package/dist/build/envelope.d.ts.map +1 -0
  25. package/dist/build/envelope.js +76 -0
  26. package/dist/build/envelope.js.map +1 -0
  27. package/dist/build/host-install.d.ts +48 -0
  28. package/dist/build/host-install.d.ts.map +1 -0
  29. package/dist/build/host-install.js +375 -0
  30. package/dist/build/host-install.js.map +1 -0
  31. package/dist/build/image-config.d.ts +32 -0
  32. package/dist/build/image-config.d.ts.map +1 -0
  33. package/dist/build/image-config.js +129 -0
  34. package/dist/build/image-config.js.map +1 -0
  35. package/dist/build/integrity.d.ts +51 -0
  36. package/dist/build/integrity.d.ts.map +1 -0
  37. package/dist/build/integrity.js +75 -0
  38. package/dist/build/integrity.js.map +1 -0
  39. package/dist/build/node-image.d.ts +18 -0
  40. package/dist/build/node-image.d.ts.map +1 -0
  41. package/dist/build/node-image.js +46 -0
  42. package/dist/build/node-image.js.map +1 -0
  43. package/dist/build/pack-root.d.ts +69 -0
  44. package/dist/build/pack-root.d.ts.map +1 -0
  45. package/dist/build/pack-root.js +102 -0
  46. package/dist/build/pack-root.js.map +1 -0
  47. package/dist/build/poetry-requirements.d.ts +5 -0
  48. package/dist/build/poetry-requirements.d.ts.map +1 -0
  49. package/dist/build/poetry-requirements.js +8 -0
  50. package/dist/build/poetry-requirements.js.map +1 -0
  51. package/dist/build/python-image.d.ts +40 -0
  52. package/dist/build/python-image.d.ts.map +1 -0
  53. package/dist/build/python-image.js +197 -0
  54. package/dist/build/python-image.js.map +1 -0
  55. package/dist/build/runners.d.ts +259 -0
  56. package/dist/build/runners.d.ts.map +1 -0
  57. package/dist/build/runners.js +4 -0
  58. package/dist/build/runners.js.map +1 -0
  59. package/dist/build/version-specifier.d.ts +2 -0
  60. package/dist/build/version-specifier.d.ts.map +1 -0
  61. package/dist/build/version-specifier.js +70 -0
  62. package/dist/build/version-specifier.js.map +1 -0
  63. package/dist/cli-package.d.ts +15 -0
  64. package/dist/cli-package.d.ts.map +1 -0
  65. package/dist/cli-package.js +37 -0
  66. package/dist/cli-package.js.map +1 -0
  67. package/dist/cli.d.ts +3 -0
  68. package/dist/cli.d.ts.map +1 -0
  69. package/dist/cli.js +26 -0
  70. package/dist/cli.js.map +1 -0
  71. package/dist/commands/adapters.d.ts +3 -0
  72. package/dist/commands/adapters.d.ts.map +1 -0
  73. package/dist/commands/adapters.js +148 -0
  74. package/dist/commands/adapters.js.map +1 -0
  75. package/dist/commands/agents.d.ts +3 -0
  76. package/dist/commands/agents.d.ts.map +1 -0
  77. package/dist/commands/agents.js +82 -0
  78. package/dist/commands/agents.js.map +1 -0
  79. package/dist/commands/approvals.d.ts +3 -0
  80. package/dist/commands/approvals.d.ts.map +1 -0
  81. package/dist/commands/approvals.js +92 -0
  82. package/dist/commands/approvals.js.map +1 -0
  83. package/dist/commands/artifacts.d.ts +3 -0
  84. package/dist/commands/artifacts.d.ts.map +1 -0
  85. package/dist/commands/artifacts.js +87 -0
  86. package/dist/commands/artifacts.js.map +1 -0
  87. package/dist/commands/auth.d.ts +3 -0
  88. package/dist/commands/auth.d.ts.map +1 -0
  89. package/dist/commands/auth.js +88 -0
  90. package/dist/commands/auth.js.map +1 -0
  91. package/dist/commands/build.d.ts +39 -0
  92. package/dist/commands/build.d.ts.map +1 -0
  93. package/dist/commands/build.js +872 -0
  94. package/dist/commands/build.js.map +1 -0
  95. package/dist/commands/capabilities.d.ts +3 -0
  96. package/dist/commands/capabilities.d.ts.map +1 -0
  97. package/dist/commands/capabilities.js +38 -0
  98. package/dist/commands/capabilities.js.map +1 -0
  99. package/dist/commands/conversations.d.ts +3 -0
  100. package/dist/commands/conversations.d.ts.map +1 -0
  101. package/dist/commands/conversations.js +75 -0
  102. package/dist/commands/conversations.js.map +1 -0
  103. package/dist/commands/deploy.d.ts +7 -0
  104. package/dist/commands/deploy.d.ts.map +1 -0
  105. package/dist/commands/deploy.js +697 -0
  106. package/dist/commands/deploy.js.map +1 -0
  107. package/dist/commands/dev.d.ts +44 -0
  108. package/dist/commands/dev.d.ts.map +1 -0
  109. package/dist/commands/dev.js +1032 -0
  110. package/dist/commands/dev.js.map +1 -0
  111. package/dist/commands/env.d.ts +27 -0
  112. package/dist/commands/env.d.ts.map +1 -0
  113. package/dist/commands/env.js +816 -0
  114. package/dist/commands/env.js.map +1 -0
  115. package/dist/commands/feedback.d.ts +33 -0
  116. package/dist/commands/feedback.d.ts.map +1 -0
  117. package/dist/commands/feedback.js +374 -0
  118. package/dist/commands/feedback.js.map +1 -0
  119. package/dist/commands/flows.d.ts +3 -0
  120. package/dist/commands/flows.d.ts.map +1 -0
  121. package/dist/commands/flows.js +60 -0
  122. package/dist/commands/flows.js.map +1 -0
  123. package/dist/commands/guardrails.d.ts +3 -0
  124. package/dist/commands/guardrails.d.ts.map +1 -0
  125. package/dist/commands/guardrails.js +89 -0
  126. package/dist/commands/guardrails.js.map +1 -0
  127. package/dist/commands/health.d.ts +8 -0
  128. package/dist/commands/health.d.ts.map +1 -0
  129. package/dist/commands/health.js +40 -0
  130. package/dist/commands/health.js.map +1 -0
  131. package/dist/commands/helpers.d.ts +37 -0
  132. package/dist/commands/helpers.d.ts.map +1 -0
  133. package/dist/commands/helpers.js +93 -0
  134. package/dist/commands/helpers.js.map +1 -0
  135. package/dist/commands/index.d.ts +7 -0
  136. package/dist/commands/index.d.ts.map +1 -0
  137. package/dist/commands/index.js +90 -0
  138. package/dist/commands/index.js.map +1 -0
  139. package/dist/commands/init.d.ts +46 -0
  140. package/dist/commands/init.d.ts.map +1 -0
  141. package/dist/commands/init.js +455 -0
  142. package/dist/commands/init.js.map +1 -0
  143. package/dist/commands/key.d.ts +3 -0
  144. package/dist/commands/key.d.ts.map +1 -0
  145. package/dist/commands/key.js +322 -0
  146. package/dist/commands/key.js.map +1 -0
  147. package/dist/commands/mcp.d.ts +43 -0
  148. package/dist/commands/mcp.d.ts.map +1 -0
  149. package/dist/commands/mcp.js +433 -0
  150. package/dist/commands/mcp.js.map +1 -0
  151. package/dist/commands/memory.d.ts +3 -0
  152. package/dist/commands/memory.d.ts.map +1 -0
  153. package/dist/commands/memory.js +82 -0
  154. package/dist/commands/memory.js.map +1 -0
  155. package/dist/commands/observations.d.ts +3 -0
  156. package/dist/commands/observations.d.ts.map +1 -0
  157. package/dist/commands/observations.js +27 -0
  158. package/dist/commands/observations.js.map +1 -0
  159. package/dist/commands/proposals.d.ts +3 -0
  160. package/dist/commands/proposals.d.ts.map +1 -0
  161. package/dist/commands/proposals.js +116 -0
  162. package/dist/commands/proposals.js.map +1 -0
  163. package/dist/commands/provenance.d.ts +3 -0
  164. package/dist/commands/provenance.d.ts.map +1 -0
  165. package/dist/commands/provenance.js +53 -0
  166. package/dist/commands/provenance.js.map +1 -0
  167. package/dist/commands/providers.d.ts +3 -0
  168. package/dist/commands/providers.d.ts.map +1 -0
  169. package/dist/commands/providers.js +202 -0
  170. package/dist/commands/providers.js.map +1 -0
  171. package/dist/commands/reviewers.d.ts +3 -0
  172. package/dist/commands/reviewers.d.ts.map +1 -0
  173. package/dist/commands/reviewers.js +78 -0
  174. package/dist/commands/reviewers.js.map +1 -0
  175. package/dist/commands/runs.d.ts +3 -0
  176. package/dist/commands/runs.d.ts.map +1 -0
  177. package/dist/commands/runs.js +221 -0
  178. package/dist/commands/runs.js.map +1 -0
  179. package/dist/commands/secrets.d.ts +21 -0
  180. package/dist/commands/secrets.d.ts.map +1 -0
  181. package/dist/commands/secrets.js +750 -0
  182. package/dist/commands/secrets.js.map +1 -0
  183. package/dist/commands/skills.d.ts +64 -0
  184. package/dist/commands/skills.d.ts.map +1 -0
  185. package/dist/commands/skills.js +430 -0
  186. package/dist/commands/skills.js.map +1 -0
  187. package/dist/commands/test.d.ts +5 -0
  188. package/dist/commands/test.d.ts.map +1 -0
  189. package/dist/commands/test.js +181 -0
  190. package/dist/commands/test.js.map +1 -0
  191. package/dist/commands/tokens.d.ts +3 -0
  192. package/dist/commands/tokens.d.ts.map +1 -0
  193. package/dist/commands/tokens.js +33 -0
  194. package/dist/commands/tokens.js.map +1 -0
  195. package/dist/commands/tools.d.ts +3 -0
  196. package/dist/commands/tools.d.ts.map +1 -0
  197. package/dist/commands/tools.js +153 -0
  198. package/dist/commands/tools.js.map +1 -0
  199. package/dist/commands/types.d.ts +54 -0
  200. package/dist/commands/types.d.ts.map +1 -0
  201. package/dist/commands/types.js +4 -0
  202. package/dist/commands/types.js.map +1 -0
  203. package/dist/commands/unwired.d.ts +17 -0
  204. package/dist/commands/unwired.d.ts.map +1 -0
  205. package/dist/commands/unwired.js +41 -0
  206. package/dist/commands/unwired.js.map +1 -0
  207. package/dist/commands/version.d.ts +8 -0
  208. package/dist/commands/version.d.ts.map +1 -0
  209. package/dist/commands/version.js +41 -0
  210. package/dist/commands/version.js.map +1 -0
  211. package/dist/config.d.ts +42 -0
  212. package/dist/config.d.ts.map +1 -0
  213. package/dist/config.js +83 -0
  214. package/dist/config.js.map +1 -0
  215. package/dist/context.d.ts +153 -0
  216. package/dist/context.d.ts.map +1 -0
  217. package/dist/context.js +44 -0
  218. package/dist/context.js.map +1 -0
  219. package/dist/deploy/defaults.d.ts +14 -0
  220. package/dist/deploy/defaults.d.ts.map +1 -0
  221. package/dist/deploy/defaults.js +37 -0
  222. package/dist/deploy/defaults.js.map +1 -0
  223. package/dist/deploy/envelope-loader.d.ts +24 -0
  224. package/dist/deploy/envelope-loader.d.ts.map +1 -0
  225. package/dist/deploy/envelope-loader.js +141 -0
  226. package/dist/deploy/envelope-loader.js.map +1 -0
  227. package/dist/deploy/post.d.ts +48 -0
  228. package/dist/deploy/post.d.ts.map +1 -0
  229. package/dist/deploy/post.js +210 -0
  230. package/dist/deploy/post.js.map +1 -0
  231. package/dist/deploy/response.d.ts +42 -0
  232. package/dist/deploy/response.d.ts.map +1 -0
  233. package/dist/deploy/response.js +128 -0
  234. package/dist/deploy/response.js.map +1 -0
  235. package/dist/deploy/runners.d.ts +218 -0
  236. package/dist/deploy/runners.d.ts.map +1 -0
  237. package/dist/deploy/runners.js +4 -0
  238. package/dist/deploy/runners.js.map +1 -0
  239. package/dist/dev/bundler.d.ts +8 -0
  240. package/dist/dev/bundler.d.ts.map +1 -0
  241. package/dist/dev/bundler.js +154 -0
  242. package/dist/dev/bundler.js.map +1 -0
  243. package/dist/dev/defaults.d.ts +138 -0
  244. package/dist/dev/defaults.d.ts.map +1 -0
  245. package/dist/dev/defaults.js +691 -0
  246. package/dist/dev/defaults.js.map +1 -0
  247. package/dist/dev/docker-compose.dev.yml +56 -0
  248. package/dist/dev/index-child.d.ts +2 -0
  249. package/dist/dev/index-child.d.ts.map +1 -0
  250. package/dist/dev/index-child.js +53 -0
  251. package/dist/dev/index-child.js.map +1 -0
  252. package/dist/dev/pack-code.d.ts +36 -0
  253. package/dist/dev/pack-code.d.ts.map +1 -0
  254. package/dist/dev/pack-code.js +129 -0
  255. package/dist/dev/pack-code.js.map +1 -0
  256. package/dist/dev/pack-env.d.ts +13 -0
  257. package/dist/dev/pack-env.d.ts.map +1 -0
  258. package/dist/dev/pack-env.js +36 -0
  259. package/dist/dev/pack-env.js.map +1 -0
  260. package/dist/dev/pack-service.d.ts +32 -0
  261. package/dist/dev/pack-service.d.ts.map +1 -0
  262. package/dist/dev/pack-service.js +188 -0
  263. package/dist/dev/pack-service.js.map +1 -0
  264. package/dist/dev/paths.d.ts +22 -0
  265. package/dist/dev/paths.d.ts.map +1 -0
  266. package/dist/dev/paths.js +35 -0
  267. package/dist/dev/paths.js.map +1 -0
  268. package/dist/dev/python-builder.d.ts +16 -0
  269. package/dist/dev/python-builder.d.ts.map +1 -0
  270. package/dist/dev/python-builder.js +122 -0
  271. package/dist/dev/python-builder.js.map +1 -0
  272. package/dist/dev/register.d.ts +71 -0
  273. package/dist/dev/register.d.ts.map +1 -0
  274. package/dist/dev/register.js +54 -0
  275. package/dist/dev/register.js.map +1 -0
  276. package/dist/dev/runners.d.ts +287 -0
  277. package/dist/dev/runners.d.ts.map +1 -0
  278. package/dist/dev/runners.js +4 -0
  279. package/dist/dev/runners.js.map +1 -0
  280. package/dist/dev/runtime-container.d.ts +62 -0
  281. package/dist/dev/runtime-container.d.ts.map +1 -0
  282. package/dist/dev/runtime-container.js +164 -0
  283. package/dist/dev/runtime-container.js.map +1 -0
  284. package/dist/dev/runtime-env.d.ts +62 -0
  285. package/dist/dev/runtime-env.d.ts.map +1 -0
  286. package/dist/dev/runtime-env.js +100 -0
  287. package/dist/dev/runtime-env.js.map +1 -0
  288. package/dist/dev/runtime-image.d.ts +13 -0
  289. package/dist/dev/runtime-image.d.ts.map +1 -0
  290. package/dist/dev/runtime-image.js +15 -0
  291. package/dist/dev/runtime-image.js.map +1 -0
  292. package/dist/env/defaults.d.ts +3 -0
  293. package/dist/env/defaults.d.ts.map +1 -0
  294. package/dist/env/defaults.js +22 -0
  295. package/dist/env/defaults.js.map +1 -0
  296. package/dist/env/pack-env-plan.d.ts +70 -0
  297. package/dist/env/pack-env-plan.d.ts.map +1 -0
  298. package/dist/env/pack-env-plan.js +236 -0
  299. package/dist/env/pack-env-plan.js.map +1 -0
  300. package/dist/env/parser.d.ts +9 -0
  301. package/dist/env/parser.d.ts.map +1 -0
  302. package/dist/env/parser.js +11 -0
  303. package/dist/env/parser.js.map +1 -0
  304. package/dist/env/project-env.d.ts +34 -0
  305. package/dist/env/project-env.d.ts.map +1 -0
  306. package/dist/env/project-env.js +45 -0
  307. package/dist/env/project-env.js.map +1 -0
  308. package/dist/env/runners.d.ts +22 -0
  309. package/dist/env/runners.d.ts.map +1 -0
  310. package/dist/env/runners.js +4 -0
  311. package/dist/env/runners.js.map +1 -0
  312. package/dist/env/writer.d.ts +7 -0
  313. package/dist/env/writer.d.ts.map +1 -0
  314. package/dist/env/writer.js +9 -0
  315. package/dist/env/writer.js.map +1 -0
  316. package/dist/errors.d.ts +31 -0
  317. package/dist/errors.d.ts.map +1 -0
  318. package/dist/errors.js +107 -0
  319. package/dist/errors.js.map +1 -0
  320. package/dist/help.d.ts +5 -0
  321. package/dist/help.d.ts.map +1 -0
  322. package/dist/help.js +61 -0
  323. package/dist/help.js.map +1 -0
  324. package/dist/index.d.ts +13 -0
  325. package/dist/index.d.ts.map +1 -0
  326. package/dist/index.js +13 -0
  327. package/dist/index.js.map +1 -0
  328. package/dist/init/augment-scaffolder.d.ts +74 -0
  329. package/dist/init/augment-scaffolder.d.ts.map +1 -0
  330. package/dist/init/augment-scaffolder.js +459 -0
  331. package/dist/init/augment-scaffolder.js.map +1 -0
  332. package/dist/init/dependency-specs.d.ts +58 -0
  333. package/dist/init/dependency-specs.d.ts.map +1 -0
  334. package/dist/init/dependency-specs.js +153 -0
  335. package/dist/init/dependency-specs.js.map +1 -0
  336. package/dist/init/gitignore-patcher.d.ts +23 -0
  337. package/dist/init/gitignore-patcher.d.ts.map +1 -0
  338. package/dist/init/gitignore-patcher.js +103 -0
  339. package/dist/init/gitignore-patcher.js.map +1 -0
  340. package/dist/init/mode-detect.d.ts +34 -0
  341. package/dist/init/mode-detect.d.ts.map +1 -0
  342. package/dist/init/mode-detect.js +115 -0
  343. package/dist/init/mode-detect.js.map +1 -0
  344. package/dist/init/package-json-patcher.d.ts +36 -0
  345. package/dist/init/package-json-patcher.d.ts.map +1 -0
  346. package/dist/init/package-json-patcher.js +128 -0
  347. package/dist/init/package-json-patcher.js.map +1 -0
  348. package/dist/init/pyproject-patcher.d.ts +56 -0
  349. package/dist/init/pyproject-patcher.d.ts.map +1 -0
  350. package/dist/init/pyproject-patcher.js +324 -0
  351. package/dist/init/pyproject-patcher.js.map +1 -0
  352. package/dist/init/python-augment.d.ts +22 -0
  353. package/dist/init/python-augment.d.ts.map +1 -0
  354. package/dist/init/python-augment.js +300 -0
  355. package/dist/init/python-augment.js.map +1 -0
  356. package/dist/init/template-files.d.ts +16 -0
  357. package/dist/init/template-files.d.ts.map +1 -0
  358. package/dist/init/template-files.js +38 -0
  359. package/dist/init/template-files.js.map +1 -0
  360. package/dist/key/defaults.d.ts +3 -0
  361. package/dist/key/defaults.d.ts.map +1 -0
  362. package/dist/key/defaults.js +60 -0
  363. package/dist/key/defaults.js.map +1 -0
  364. package/dist/key/fingerprint.d.ts +6 -0
  365. package/dist/key/fingerprint.d.ts.map +1 -0
  366. package/dist/key/fingerprint.js +25 -0
  367. package/dist/key/fingerprint.js.map +1 -0
  368. package/dist/key/paths.d.ts +30 -0
  369. package/dist/key/paths.d.ts.map +1 -0
  370. package/dist/key/paths.js +51 -0
  371. package/dist/key/paths.js.map +1 -0
  372. package/dist/key/runners.d.ts +60 -0
  373. package/dist/key/runners.d.ts.map +1 -0
  374. package/dist/key/runners.js +4 -0
  375. package/dist/key/runners.js.map +1 -0
  376. package/dist/main.d.ts +106 -0
  377. package/dist/main.d.ts.map +1 -0
  378. package/dist/main.js +198 -0
  379. package/dist/main.js.map +1 -0
  380. package/dist/mcp/launcher.d.ts +143 -0
  381. package/dist/mcp/launcher.d.ts.map +1 -0
  382. package/dist/mcp/launcher.js +393 -0
  383. package/dist/mcp/launcher.js.map +1 -0
  384. package/dist/mcp/preset-loader.d.ts +29 -0
  385. package/dist/mcp/preset-loader.d.ts.map +1 -0
  386. package/dist/mcp/preset-loader.js +217 -0
  387. package/dist/mcp/preset-loader.js.map +1 -0
  388. package/dist/mcp/preset-types.d.ts +71 -0
  389. package/dist/mcp/preset-types.d.ts.map +1 -0
  390. package/dist/mcp/preset-types.js +4 -0
  391. package/dist/mcp/preset-types.js.map +1 -0
  392. package/dist/mcp/presets/README.md +68 -0
  393. package/dist/mcp/presets/postgres.json +15 -0
  394. package/dist/output.d.ts +26 -0
  395. package/dist/output.d.ts.map +1 -0
  396. package/dist/output.js +46 -0
  397. package/dist/output.js.map +1 -0
  398. package/dist/pack-config.d.ts +37 -0
  399. package/dist/pack-config.d.ts.map +1 -0
  400. package/dist/pack-config.js +65 -0
  401. package/dist/pack-config.js.map +1 -0
  402. package/dist/package-manager.d.ts +33 -0
  403. package/dist/package-manager.d.ts.map +1 -0
  404. package/dist/package-manager.js +129 -0
  405. package/dist/package-manager.js.map +1 -0
  406. package/dist/parse.d.ts +82 -0
  407. package/dist/parse.d.ts.map +1 -0
  408. package/dist/parse.js +99 -0
  409. package/dist/parse.js.map +1 -0
  410. package/dist/providers/preset-loader.d.ts +47 -0
  411. package/dist/providers/preset-loader.d.ts.map +1 -0
  412. package/dist/providers/preset-loader.js +107 -0
  413. package/dist/providers/preset-loader.js.map +1 -0
  414. package/dist/providers/presets/anthropic.json +47 -0
  415. package/dist/providers/presets/gemini.json +40 -0
  416. package/dist/reference.d.ts +28 -0
  417. package/dist/reference.d.ts.map +1 -0
  418. package/dist/reference.js +52 -0
  419. package/dist/reference.js.map +1 -0
  420. package/dist/sdk-package.d.ts +9 -0
  421. package/dist/sdk-package.d.ts.map +1 -0
  422. package/dist/sdk-package.js +20 -0
  423. package/dist/sdk-package.js.map +1 -0
  424. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +253 -0
  425. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +299 -0
  426. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +291 -0
  427. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +289 -0
  428. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +704 -0
  429. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +288 -0
  430. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +211 -0
  431. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +181 -0
  432. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +205 -0
  433. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +322 -0
  434. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +173 -0
  435. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +299 -0
  436. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +240 -0
  437. package/dist/stop-signal.d.ts +15 -0
  438. package/dist/stop-signal.d.ts.map +1 -0
  439. package/dist/stop-signal.js +16 -0
  440. package/dist/stop-signal.js.map +1 -0
  441. package/dist/templates/minimal/.gitignore +8 -0
  442. package/dist/templates/minimal/.nvmrc +1 -0
  443. package/dist/templates/minimal/AGENTS.md +23 -0
  444. package/dist/templates/minimal/README.md.tmpl +69 -0
  445. package/dist/templates/minimal/agents/.gitkeep +0 -0
  446. package/dist/templates/minimal/flows/.gitkeep +0 -0
  447. package/dist/templates/minimal/guardrails/.gitkeep +0 -0
  448. package/dist/templates/minimal/kindgi.config.ts.tmpl +44 -0
  449. package/dist/templates/minimal/package.json.tmpl +25 -0
  450. package/dist/templates/minimal/pnpm-workspace.yaml +6 -0
  451. package/dist/templates/minimal/tools/.gitkeep +0 -0
  452. package/dist/templates/minimal/tsconfig.json.tmpl +27 -0
  453. package/dist/templates/minimal/vitest.config.ts.tmpl +14 -0
  454. package/dist/templates/python/.gitignore +9 -0
  455. package/dist/templates/python/AGENTS.md +30 -0
  456. package/dist/templates/python/README.md.tmpl +56 -0
  457. package/dist/templates/python/agents/echo_agent.py.tmpl +23 -0
  458. package/dist/templates/python/flows/echo_flow.py.tmpl +17 -0
  459. package/dist/templates/python/guardrails/response_not_empty.py.tmpl +27 -0
  460. package/dist/templates/python/pyproject.toml.tmpl +42 -0
  461. package/dist/templates/python/tests/test_tools.py.tmpl +22 -0
  462. package/dist/templates/python/tools/echo.py.tmpl +27 -0
  463. package/dist/templates/python/tools/greet.py.tmpl +20 -0
  464. package/dist/templates/sample/.gitignore +8 -0
  465. package/dist/templates/sample/.nvmrc +1 -0
  466. package/dist/templates/sample/AGENTS.md +23 -0
  467. package/dist/templates/sample/README.md.tmpl +85 -0
  468. package/dist/templates/sample/agents/echo-agent/index.ts.tmpl +34 -0
  469. package/dist/templates/sample/flows/echo-flow/index.ts.tmpl +59 -0
  470. package/dist/templates/sample/guardrails/response-not-empty/index.ts.tmpl +50 -0
  471. package/dist/templates/sample/kindgi.config.ts.tmpl +41 -0
  472. package/dist/templates/sample/package.json.tmpl +25 -0
  473. package/dist/templates/sample/pnpm-workspace.yaml +6 -0
  474. package/dist/templates/sample/tools/echo/index.test.ts.tmpl +31 -0
  475. package/dist/templates/sample/tools/echo/index.ts.tmpl +37 -0
  476. package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +60 -0
  477. package/dist/templates/sample/tools/greet/index.ts.tmpl +35 -0
  478. package/dist/templates/sample/tsconfig.json.tmpl +27 -0
  479. package/dist/templates/sample/vitest.config.ts.tmpl +14 -0
  480. package/dist/test/defaults.d.ts +3 -0
  481. package/dist/test/defaults.d.ts.map +1 -0
  482. package/dist/test/defaults.js +104 -0
  483. package/dist/test/defaults.js.map +1 -0
  484. package/dist/test/runners.d.ts +60 -0
  485. package/dist/test/runners.d.ts.map +1 -0
  486. package/dist/test/runners.js +4 -0
  487. package/dist/test/runners.js.map +1 -0
  488. package/dist/version-info.d.ts +9 -0
  489. package/dist/version-info.d.ts.map +1 -0
  490. package/dist/version-info.js +27 -0
  491. package/dist/version-info.js.map +1 -0
  492. package/dist/write-fully.d.ts +13 -0
  493. package/dist/write-fully.d.ts.map +1 -0
  494. package/dist/write-fully.js +17 -0
  495. package/dist/write-fully.js.map +1 -0
  496. package/package.json +63 -4
@@ -0,0 +1,288 @@
1
+ ---
2
+ name: kindgi-authoring-tools
3
+ description: >
4
+ Covers writing tools for a Kindgi pack with @kindgi/sdk:
5
+ defining tools via defineTool with either an imperative handler or a
6
+ declarative HTTP spec, choosing between Zod v4 and JSON Schema for
7
+ input/output, tool id naming conventions, handling the Result return
8
+ shape, and how tools reach agents via ToolRef versioning. Load this
9
+ whenever you are authoring or editing code inside a pack's tools/
10
+ directory, defining a tool, or wiring a tool onto an agent. Getting
11
+ started with a new pack is covered by kindgi-getting-started;
12
+ authoring agents is covered by kindgi-authoring-agents.
13
+ type: core
14
+ library: "@kindgi/sdk"
15
+ version: "0.4.1"
16
+ sdk_version: "0.1.0"
17
+ pack_languages: [node]
18
+ sources:
19
+ - packages/tools/src/types.ts
20
+ - packages/tools/src/define.ts
21
+ ---
22
+
23
+ # Authoring Kindgi tools
24
+
25
+ > **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
26
+ > not a global command. Run it through the project's package manager —
27
+ > `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
28
+ > `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
29
+
30
+ A **tool** is a callable unit of work an agent invokes: a function with a
31
+ typed input, a typed output, and either author-written logic or a
32
+ declarative spec the framework synthesizes into logic. Tools live at
33
+ `tools/<name>/index.ts` inside a pack; the pack indexer discovers
34
+ them by folder convention.
35
+
36
+ Before writing a tool, establish what it should DO — its purpose,
37
+ inputs, outputs, and whether it extends an existing tool or is fresh.
38
+ Requests like "add a tool" without a purpose are conversation openers,
39
+ not tickets. Ask what it should compute or fetch, what shape the caller
40
+ provides, what shape it returns. The pack's existing tools are examples
41
+ that prove the framework runs end-to-end — they are NOT the shape you
42
+ imitate unless the user explicitly asks for that.
43
+
44
+ ## Two authoring modes
45
+
46
+ Both use `defineTool` from `@kindgi/sdk/define`. Pick based on where the
47
+ logic lives:
48
+
49
+ - **`handler`** — imperative TS function. Use when the tool computes,
50
+ transforms, calls a proprietary library, or has non-trivial logic
51
+ that lives in the pack's source.
52
+ - **`spec`** — declarative descriptor. Use when the tool is a
53
+ straightforward remote call. `spec: {kind: 'http', ...}` is the kind
54
+ that ships with the framework; other kinds can be added with
55
+ `registerToolSpecSynthesizer`. The framework synthesizes the handler
56
+ from the spec — URL substitution, timeout, abort propagation, secret
57
+ resolution and the status check are handled for you (there is no
58
+ automatic retry).
59
+
60
+ `handler` and `spec` are MUTUALLY EXCLUSIVE. Setting both (or neither)
61
+ makes `defineTool` return an `invalid-tool-definition` error.
62
+
63
+ ## Imperative handler
64
+
65
+ ```ts
66
+ // tools/verify-citation/index.ts
67
+ import { defineTool } from '@kindgi/sdk/define';
68
+ import type { ToolId } from '@kindgi/sdk/types';
69
+ import { z } from 'zod';
70
+
71
+ const Input = z.object({
72
+ citation: z.string().min(1),
73
+ jurisdiction: z.enum(['US', 'UK', 'EU']),
74
+ });
75
+
76
+ const Output = z.object({
77
+ found: z.boolean(),
78
+ canonicalCite: z.string().optional(),
79
+ });
80
+
81
+ const defined = defineTool({
82
+ id: 'acme.verify-citation' as ToolId,
83
+ description:
84
+ 'Verify a legal citation against the jurisdictional citator. Returns whether the citation resolves and the canonical form.',
85
+ version: '0.1.0',
86
+ input: Input,
87
+ output: Output,
88
+ effects: [],
89
+ mutating: false,
90
+ handler: async (input, ctx) => {
91
+ // ctx.tenantId, ctx.abortSignal, ctx.secrets (what needsSpec declares) available
92
+ // Return type MUST match Output schema (validated at invoke time)
93
+ return { found: true, canonicalCite: '...' };
94
+ },
95
+ });
96
+
97
+ if (defined.kind === 'err') {
98
+ throw new Error(`acme.verify-citation failed to compile: ${defined.error.message}`);
99
+ }
100
+
101
+ export default defined.value;
102
+ ```
103
+
104
+ A handler must return a Promise; one with nothing to `await` can return `Promise.resolve({ … })` instead of being `async`, which keeps lint rules like `require-await` quiet.
105
+
106
+ ### What the handler receives
107
+
108
+ The handler gets the **parsed** input, typed `z.infer` of `input` (Zod's output type):
109
+
110
+ - **Defaults.** A `.default()` field is optional to the caller, the model included. The tool's advertised schema doesn't list it as required, and the handler always gets a value.
111
+ - **Transforms and refinements.** `.transform()` results and `.refine()` checks apply before the handler runs. A failed refinement comes back as `input-validation-failed`, with the field's path.
112
+ - **Extra keys.** A plain `z.object` accepts them and strips them. Use `z.strictObject` to reject them.
113
+ - **JSON-Schema-authored tools** get each property's `default` filled in the same way.
114
+
115
+ The output side is the reverse: the advertised output schema requires every field, defaulted ones included. Return them all.
116
+
117
+ ### Configuration and secrets
118
+
119
+ A secret that belongs to the tenant — an API key a customer gives you — is declared, and read from `ctx.secrets`:
120
+
121
+ ```ts
122
+ const defined = defineTool({
123
+ // …id, description, version, input, output, effects…
124
+ needsSpec: { secrets: { CITATOR_KEY: { type: 'string', minLength: 20 } } },
125
+ handler: async (input, ctx) => {
126
+ const key = ctx.secrets?.CITATOR_KEY;
127
+ // …
128
+ },
129
+ });
130
+ ```
131
+
132
+ The runtime resolves every declared secret on every call, for the call's tenant, in its env (`KINDGI_ENV`; in `kindgi dev`, `local`: the pack's `.env` and `.env.local`). It checks each value against its schema, and fails the call, naming the secret, when one is missing or doesn't match. Every declared secret is required, so in a runtime call `ctx.secrets` holds them all; it's optional in the type because a unit test builds its own context and passes `secrets: { CITATOR_KEY: '…' }`.
133
+
134
+ Everything else comes from the process environment: `process.env.CITATOR_URL`. The pack service runs with the pack's env files in `kindgi dev`, and with the container's environment in an image. Declare the names your code reads in `kindgi.config.ts`, `env: { required: ['CITATOR_URL'], optional: [...] }`: a deployment injects exactly those, a pack service missing a required one isn't ready and says which, and `kindgi dev` warns about it. Values per environment go in `environments.<name>.env`, secrets only as references.
135
+
136
+ ## Declarative HTTP spec
137
+
138
+ ```ts
139
+ // tools/fetch-order/index.ts
140
+ import { defineTool } from '@kindgi/sdk/define';
141
+ import type { ToolId } from '@kindgi/sdk/types';
142
+ import { z } from 'zod';
143
+
144
+ const defined = defineTool({
145
+ id: 'shop.fetch-order' as ToolId,
146
+ description: 'Fetch an order by id from the storefront API.',
147
+ version: '0.1.0',
148
+ input: z.object({ orderId: z.string() }),
149
+ output: z.object({ id: z.string(), status: z.string(), total: z.number() }),
150
+ effects: [],
151
+ mutating: false,
152
+ spec: {
153
+ kind: 'http',
154
+ method: 'GET',
155
+ urlTemplate: 'https://api.shop.example/orders/{orderId}',
156
+ // Every {placeholder} MUST be a key on the input schema
157
+ authorization: {
158
+ kind: 'bearer',
159
+ secretRef: { envName: 'production', name: 'shop-api-token' },
160
+ },
161
+ successStatus: { min: 200, max: 299 },
162
+ },
163
+ });
164
+
165
+ if (defined.kind === 'err') throw new Error(defined.error.message);
166
+ export default defined.value;
167
+ ```
168
+
169
+ ## Read-only tools: `mutating`
170
+
171
+ `mutating: false` declares that the tool changes nothing outside Kindgi; it only reads. Leaving `mutating` out counts as mutating, the same as `true`. It decides two things, in both authoring modes:
172
+
173
+ - **Dry runs.** `kindgi runs start --dry-run` runs a tool only if it's `mutating: false` and its `effects` declare no `writes`, `deletes`, `spawns-run`, `emits-event` or `external-side-effect`. The first other tool stops the run with `dry-run-effectful-tool`.
174
+ - **Approval gates.** When an agent turns tool gates on (`conversationPolicy.hitl.tools`) and sets neither an override for the tool nor a `default`, a `mutating: false` tool runs straight through, and any other tool asks for approval on its first use.
175
+
176
+ So declare `mutating: false` on every tool that only reads, and never on one that writes.
177
+
178
+ ## Tool id convention
179
+
180
+ `<pack-id>.<tool-name>` — kebab-case, dot-namespaced. The `<pack-id>`
181
+ prefix scopes the tool to its pack; `<tool-name>` names the operation.
182
+ Enforced by `defineTool` at author time. Examples:
183
+ `acme.verify-citation`, `shop.fetch-order`, `demo.echo`.
184
+
185
+ ## Iterating on a tool
186
+
187
+ Edit the source file (`tools/<tool>/index.ts`), save. The next
188
+ `kindgi runs start` sees the change — new input/output schema, new
189
+ description, new handler behavior. No version bump, no restart, no
190
+ re-registration ceremony. Source is truth in dev.
191
+
192
+ The `version` field is a **semver contract for humans** — it declares
193
+ what callers can rely on. Bump it because the *contract with
194
+ downstream callers* changed (removed a field, tightened a type,
195
+ narrowed enum values), not because you saved the file. If you're
196
+ iterating in dev and the shape isn't finalized, leave `version`
197
+ alone.
198
+
199
+ **When version matters:** `kindgi deploy` publishes to a durable
200
+ production registry that enforces the immutable `(id, version)`
201
+ contract — a re-publish of the same version with different bytes
202
+ gets rejected. That's when semver discipline kicks in. The deploy
203
+ tooling surfaces the check; you don't have to think about it while
204
+ authoring.
205
+
206
+ **Downstream callers still pin ranges.** An agent's `tools: [{id,
207
+ version: '^0.1.0'}]` picks the highest active version matching the
208
+ range at run start. Compatible tool updates (patch, minor) reach the
209
+ agent without editing agent source; breaking updates (major) require
210
+ the agent-author to opt in.
211
+
212
+ ## Wiring the tool onto an agent
213
+
214
+ Agents reference tools via `ToolRef[]`, NOT `string[]`. Each entry is
215
+ `{id, version}` where `version` is an npm-style semver **range**:
216
+
217
+ ```ts
218
+ // agents/brief-writer/index.ts
219
+ tools: [
220
+ { id: 'acme.verify-citation' as ToolId, version: '^0.1.0' },
221
+ { id: 'acme.fetch-precedent' as ToolId, version: '~0.2.0' },
222
+ ],
223
+ ```
224
+
225
+ The resolver picks the highest active version matching the range at
226
+ run start via `semver.maxSatisfying`. No implicit `:latest`.
227
+
228
+ ## Common mistakes
229
+
230
+ 1. **Copying another tool's shape without user intent.** The pack may
231
+ ship `tools/echo/` as a starter example. Copying its skeleton to
232
+ make `tools/lookup/` produces plausible-looking code that solves
233
+ the wrong problem. Ask the user what the new tool should DO first.
234
+
235
+ 2. **Passing bare strings to `agent.tools`.** `tools: ['acme.verify-citation']`
236
+ doesn't type-check (`tools` is `ToolRef[]`), and `defineAgent`
237
+ returns `invalid-agent` for a bare string that slips through. Use
238
+ `[{id: 'acme.verify-citation', version: '^0.1.0'}]`.
239
+
240
+ 3. **Forgetting the `Result` unwrap.** `defineTool` returns
241
+ `Result<DefinedTool, ToolError>` — a bad schema doesn't throw at import
242
+ time unless you check `defined.kind === 'err'`. Always unwrap at
243
+ module load so a broken pack fails LOUDLY, not on first invocation.
244
+
245
+ 4. **`handler` and `spec` together.** Mutually exclusive.
246
+ `defineTool` returns `invalid-tool-definition` with both set.
247
+
248
+ 5. **`{placeholder}` in `urlTemplate` without a matching input key.**
249
+ HTTP tools substitute placeholders from the input at invoke time.
250
+ Missing keys throw a clear error at invoke time — check both sides
251
+ line up.
252
+
253
+ 6. **An HTTP tool's `secretRef` in the wrong env.** The runtime
254
+ resolves `authorization.secretRef` itself, on every call, in the env
255
+ the ref names: `{ envName: 'local', … }` is the pack's `.env` /
256
+ `.env.local` under `kindgi dev`, while `'production'` reads
257
+ `.env.production`. A secret it can't find fails the call with
258
+ `secret-unavailable`, naming it. Only a harness of your own that
259
+ calls `invokeTool` directly has to pass `ctx.resolveSecret`.
260
+ 7. **Reading a secret from `process.env` in a tool that runs for many
261
+ tenants.** The pack service's environment is one for all of them.
262
+ Declare the secret in `needsSpec.secrets` and read `ctx.secrets`.
263
+
264
+ 8. **Bumping `version` on every dev save.** Old habit from
265
+ frameworks that stored manifests immutably by `(id, version)`.
266
+ Kindgi's dev mode reads tool manifests directly from source —
267
+ version doesn't gate iteration. Bump it when the *contract*
268
+ changes (breaking schema shape, semantic behavior), not when you
269
+ save. See the "Iterating on a tool" section above.
270
+
271
+ ## References
272
+
273
+ - Type surface: `hover any @kindgi/sdk/define export` in your editor
274
+ for full JSDoc — every field on `DefineToolSpec` / `ToolManifest`
275
+ documents purpose, when to set it, and gotchas.
276
+ - Companion docs: `pnpm --filter @kindgi/sdk exec typedoc` regenerates
277
+ markdown API docs at `packages/sdk/docs/`.
278
+ - Common patterns: check the `sample` template (`kindgi init
279
+ --template=sample`) for working examples of both authoring modes.
280
+
281
+ ## When the framework itself is the problem
282
+
283
+ If you diagnose that the bug lives in Kindgi/`@kindgi/sdk` itself (SDK
284
+ type drift, wire schema silently dropping a field, indexer allowlist
285
+ gap, misleading error, CLI friction) — not in the pack's own code —
286
+ load the `kindgi-framework-feedback` skill and file a structured report
287
+ with `kindgi feedback write`. That diagnostic is high-signal input the
288
+ maintainers can act on; don't let it disappear into the transcript.
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: kindgi-framework-feedback
3
+ description: >
4
+ Capture framework-level feedback about Kindgi/@kindgi/sdk when you
5
+ diagnose a problem that isn't in the pack's own code — SDK type
6
+ drift, API wire schema gaps, adapter regressions, CLI
7
+ friction, skill/code mismatches, misleading errors, UX cliffs.
8
+ Load whenever you have just diagnosed such a problem during pack
9
+ authoring. Also load when the pack author asks you to remove,
10
+ mark-fixed, or re-order entries in FEEDBACK.md — the file is a
11
+ simple markdown list you edit directly with the Edit tool. Distinct
12
+ from authoring skills (which help you build packs) and from
13
+ getting-started (which onboards new packs); this skill turns your
14
+ diagnostic output into durable input for framework improvement.
15
+ type: core
16
+ library: "@kindgi/sdk"
17
+ version: "0.4.0"
18
+ sdk_version: "0.1.0"
19
+ pack_languages: [node, python]
20
+ ---
21
+
22
+ # Capturing framework feedback
23
+
24
+ > **Running `kindgi`:** in a Node project the CLI is a devDependency
25
+ > (`@kindgi/cli`), not a global command. Run it through the project's
26
+ > package manager — `pnpm exec kindgi …`, `npx --no kindgi …` (npm),
27
+ > `yarn kindgi …` or `bun run kindgi …`. A Python pack (`[tool.kindgi]` in
28
+ > `pyproject.toml`) has no Node project: run the `kindgi` on `PATH`.
29
+ > Commands below are written `kindgi …` for brevity.
30
+
31
+ You just spent time diagnosing a Kindgi-framework issue. That diagnostic
32
+ is exactly the kind of report the framework maintainers need — file:line
33
+ pointers, exact reproducers, honest severity, what you expected vs. what
34
+ you observed. **This skill exists to make sure that value doesn't get
35
+ lost in the transcript.**
36
+
37
+ ## The mechanism is deliberately simple
38
+
39
+ One file: `FEEDBACK.md` at the pack root. Each entry is a markdown
40
+ section with two identifiers:
41
+
42
+ - **`id: YYYY-MM-DD.N`** — per-day counter, unique within this pack.
43
+ Used for local navigation and hand-editing ("remove 2026-09-25.3").
44
+ - **`hash: feedback-<8-hex>`** — deterministic hash of the
45
+ normalized title. Two packs (or two peers) filing the same issue
46
+ produce the same hash, so p2p sync and framework-side clustering
47
+ work without a central registry.
48
+
49
+ `kindgi feedback write` appends new entries with both stamps. To mark
50
+ an item fixed, add a `> **Fixed:** <note>` line right after its
51
+ header. To remove an item, delete the section (including the
52
+ trailing `---` separator). All of that is plain markdown editing —
53
+ no `kindgi feedback update`, no `kindgi feedback delete`, no
54
+ separate tracking database.
55
+
56
+ ## When to file
57
+
58
+ File an entry when you diagnose:
59
+
60
+ - **SDK type drift** — a skill or docs claim a field that the SDK's
61
+ `.d.ts` doesn't have (or vice versa).
62
+ - **Wire schema gaps** — the API silently drops a field you sent
63
+ (usually `additionalProperties: false` missing a property).
64
+ - **Adapter regressions** — behavior changed between rebuilds.
65
+ - **CLI friction** — command failures with unhelpful error messages,
66
+ missing verbs, stubs that pretend to work.
67
+ - **Skill/code mismatches** — the skill example doesn't work as
68
+ written.
69
+ - **Misleading errors** — the error message points at the wrong
70
+ thing.
71
+ - **UX cliffs** — the "obvious next step" fails and the recovery
72
+ isn't documented.
73
+
74
+ Do NOT file when:
75
+
76
+ - The bug is in the pack's own code (that's a normal debug loop).
77
+ - You haven't actually reproduced it — file with `--kind=question`
78
+ instead so it's flagged as unconfirmed.
79
+
80
+ ## How to file — the command
81
+
82
+ ```sh
83
+ kindgi feedback write \
84
+ --kind=bug \
85
+ --severity=high \
86
+ --title="preferredProvider silently dropped by wire schema" \
87
+ --authored-by=claude-code \
88
+ --body=@/tmp/report.md
89
+ ```
90
+
91
+ Body-input modes:
92
+
93
+ - `--body=@<file>` — reads the file at path.
94
+ - `--body="<literal text>"` — literal content inline. Useful for
95
+ short entries.
96
+ - `--body-stdin` — reads from stdin (`diagnose | kindgi feedback write ...`).
97
+ - `--interactive` (or omit all of the above) — opens `$EDITOR` with
98
+ a template.
99
+
100
+ The entry lands as a new `## <title>` section appended to
101
+ `FEEDBACK.md`, stamped with a fresh `id: YYYY-MM-DD.N`. The file is
102
+ created with a header if it doesn't yet exist.
103
+
104
+ ## Entry shape (what the CLI produces)
105
+
106
+ ```md
107
+ ## preferredProvider silently dropped by wire schema
108
+
109
+ - **id:** 2026-09-25.3
110
+ - **hash:** feedback-a3f2c1d0
111
+ - **kind:** bug
112
+ - **severity:** high
113
+ - **date:** 2026-09-25T14:32:07.104Z
114
+ - **sdk:** 0.1.2 · **cli:** 0.1.2 · **by:** claude-code
115
+
116
+ ### Summary
117
+ One-line: what the report is about.
118
+
119
+ ### Observed
120
+ What happened, with file:line pointers when possible.
121
+
122
+ ### Expected
123
+ What should have happened.
124
+
125
+ ### Reproducer
126
+ Exact commands, spec files, output.
127
+
128
+ ### Suggested fix
129
+ Optional; leave blank if you don't have one.
130
+
131
+ ---
132
+ ```
133
+
134
+ ## Editing FEEDBACK.md directly
135
+
136
+ Entries are referenced locally by their `id` (e.g. `2026-09-25.3`)
137
+ or by their title; across packs (or between peers) they are referenced
138
+ by their `hash` (e.g. `feedback-a3f2c1d0`). When the pack author says
139
+ something like:
140
+
141
+ - **"Remove 2026-09-25.3"** / **"Remove the preferredProvider
142
+ entry"** → find the section whose `id` matches (or whose `##
143
+ <title>` matches), delete from the header down through the next
144
+ `---` separator (inclusive). Do NOT renumber other entries — ids
145
+ are historical identifiers, gaps are expected.
146
+ - **"Mark 2026-09-25.3 fixed"** / **"That preferredProvider one
147
+ landed in commit abc123"** → find the section, insert a line
148
+ right after the header:
149
+ ```md
150
+ > **Fixed:** landed in commit abc123 (2026-09-25). <optional context>
151
+ ```
152
+ - **"Note that 2026-09-25.5 is a duplicate of feedback-a3f2c1d0"** /
153
+ **"Merge these — same hash"** → find the section, insert:
154
+ ```md
155
+ > **Duplicate of:** feedback-a3f2c1d0 (<optional context>)
156
+ ```
157
+ Prefer the `hash` when the duplicate lives in another pack (peer /
158
+ framework side); prefer the `id` when it's a local duplicate.
159
+ - **Restructuring / re-ordering** → use the Edit tool to move the
160
+ section; keep the header + `- **id:** …` + `- **hash:** …` lines
161
+ intact so both identifiers stay stable.
162
+
163
+ Do NOT try to re-file the same item through `kindgi feedback write`
164
+ — that would create a new entry with a new id (though the hash
165
+ would match, which is exactly the p2p-dedup signal). Always edit
166
+ directly for maintenance operations within one pack.
167
+
168
+ ## Fields to fill precisely
169
+
170
+ - **`kind`** — honest classification.
171
+ - `bug` — the framework did the wrong thing (crashed, silently
172
+ dropped a field, contradicted its own docs).
173
+ - `friction` — the framework did the "right" thing but the UX cost
174
+ more time than the task warranted.
175
+ - `question` — you don't understand something and the docs don't
176
+ answer it.
177
+ - `design` — you observed something that works as designed but the
178
+ design might be wrong.
179
+
180
+ - **`severity`** — honest impact.
181
+ - `blocker` — nothing useful can happen until this is fixed.
182
+ - `high` — a common workflow is broken; users will hit this.
183
+ - `medium` — real friction, but there's a documented workaround.
184
+ - `low` — cosmetic, tiny annoyance, or affects one obscure path.
185
+
186
+ - **`authored_by`** — `claude-code` when the diagnostic came entirely
187
+ from an AI coding assistant; `human` when the pack author wrote
188
+ it; `mixed` when it's a combination.
189
+
190
+ ## Common mistakes
191
+
192
+ 1. **File-path-only entries** ("bug in router.ts").
193
+ Without a reproducer + expected behavior, the maintainer has to
194
+ reverse-engineer your session. File:line is necessary but not
195
+ sufficient.
196
+ 2. **Skipping "Suggested fix" when you have one.** If you diagnosed
197
+ the root cause, name it. "Add `preferredProvider` to `AgentSchema`
198
+ in `packages/api/src/openapi/schemas.ts:667`" is worth a dozen
199
+ back-and-forth clarifications.
200
+ 3. **Bundling multiple bugs into one entry.** Run `kindgi feedback
201
+ write` once per bug. Each gets its own number, its own fix
202
+ status, its own removal path.
203
+ 4. **Sensitive state in reproducers.** Reproducer sections sometimes
204
+ contain API keys, tenant IDs, secrets — review before committing.
205
+ 5. **Filing "the way I'd design it" as a bug.** Design disagreements
206
+ are `--kind=design`, not `--kind=bug`. Both are welcome; the
207
+ classification helps prioritization.
208
+
209
+ ## References
210
+
211
+ - `FEEDBACK.md` at the pack root — the running list itself.
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: kindgi-getting-started
3
+ description: >
4
+ Bootstrap a Kindgi pack from scratch: scaffold with
5
+ kindgi init, understand the pack layout (tools / agents /
6
+ guardrails / flows), boot the dev harness with kindgi dev, and hit
7
+ the first end-to-end run with kindgi runs start. Load this when a
8
+ project has no kindgi.config.ts yet and the user asks to "add
9
+ Kindgi", "create a pack", "scaffold a Kindgi pack", "start a
10
+ new pack", or when the user needs the mental model for what a Kindgi
11
+ pack IS. Once the pack is scaffolded and you are authoring code,
12
+ switch to kindgi-authoring-tools / kindgi-authoring-agents /
13
+ kindgi-authoring-guardrails / kindgi-authoring-flows for the specific
14
+ primitive.
15
+ type: core
16
+ library: "@kindgi/sdk"
17
+ version: "0.3.2"
18
+ sdk_version: "0.1.0"
19
+ pack_languages: [node]
20
+ ---
21
+
22
+ # Getting started with Kindgi
23
+
24
+ > **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
25
+ > not a global command. Run it through the project's package manager —
26
+ > `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
27
+ > `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
28
+
29
+ Scaffold a Kindgi pack — a versioned, deployable bundle
30
+ of tools, agents, guardrails, and flows — and run it end-to-end
31
+ locally.
32
+
33
+ ## What a pack IS
34
+
35
+ A pack is one directory containing four primitive kinds authored via
36
+ `@kindgi/sdk`:
37
+
38
+ - **Tools** (`tools/<name>/index.ts`) — callable units of work.
39
+ - **Agents** (`agents/<name>/index.ts`) — LLM orchestrators that call
40
+ tools.
41
+ - **Guardrails** (`guardrails/<name>/index.ts`) — safety checks that
42
+ gate agent turns.
43
+ - **Flows** (`flows/<name>/index.ts`) — declarative workflows
44
+ composing multiple nodes.
45
+
46
+ Each primitive is a single TypeScript file whose default export is the
47
+ definition: `defineTool` / `defineAgent` / `defineFlow` build tools,
48
+ agents and flows; a guardrail file default-exports its declaration and
49
+ builds its check with `defineCheck` (see
50
+ `kindgi-authoring-guardrails`). The pack indexer discovers them by
51
+ folder convention.
52
+
53
+ ## Scaffold
54
+
55
+ **A new pack:**
56
+
57
+ ```bash
58
+ npx @kindgi/cli init my-pack
59
+ cd my-pack
60
+ pnpm install
61
+ ```
62
+
63
+ **Kindgi inside an existing app** (Next.js, NestJS, …) — in the app's
64
+ root, no pack name:
65
+
66
+ ```bash
67
+ npx @kindgi/cli init
68
+ pnpm install # or the app's own package manager
69
+ ```
70
+
71
+ This adds `kindgi.config.ts` and a `kindgi/` folder beside the app's code,
72
+ and never creates env files: `kindgi dev` reads the app's own `.env` /
73
+ `.env.local`.
74
+
75
+ Either way, `init` adds `@kindgi/sdk` and `@kindgi/cli` to the project's
76
+ `package.json`, so the project runs the `kindgi` it pins — never a global
77
+ one. (`npx @kindgi/cli` is the scoped package; a bare `npx kindgi` would
78
+ fetch an unrelated package.)
79
+
80
+ Two templates:
81
+
82
+ - `--template=minimal` (default) — folder structure only, no example
83
+ primitives. Right when you know what you want to build.
84
+ - `--template=sample` — worked kitchen-sink example (echo tool + agent
85
+ + guardrail + flow). Right for exploring the primitive kinds.
86
+
87
+ ## Boot the dev harness
88
+
89
+ ```bash
90
+ pnpm exec kindgi dev
91
+ ```
92
+
93
+ `kindgi dev` boots a local Kindgi runtime (starting the services it
94
+ needs on first run), indexes the pack, registers every primitive, and
95
+ re-registers on every save. The banner prints the API URL, the seeded
96
+ bearer token, and (if the console is bundled) the `/console/` URL.
97
+
98
+ The local runtime includes a built-in `demo.echo-agent` you can hit to
99
+ verify the harness before authoring anything.
100
+
101
+ ## First run
102
+
103
+ From a second terminal, with `cd my-pack`:
104
+
105
+ ```bash
106
+ pnpm exec kindgi runs start --agent=demo.echo-agent --input='{"userMessage":"hi"}'
107
+ ```
108
+
109
+ The CLI reads `.kindgirc.json` (auto-written by `kindgi dev`) for the
110
+ API URL + token, so second-terminal commands work without flags.
111
+
112
+ Once you author your own agent, replace `demo.echo-agent` with your
113
+ own id.
114
+
115
+ ## Layout
116
+
117
+ ```
118
+ my-pack/
119
+ ├── kindgi.config.ts # pack id + version + discovery patterns
120
+ ├── package.json # @kindgi/sdk + zod; devDependency @kindgi/cli
121
+ ├── tsconfig.json
122
+ ├── .claude/
123
+ │ └── skills/ # auto-copied from @kindgi/sdk on init
124
+ ├── tools/ # place `<name>/index.ts` per tool
125
+ ├── agents/ # place `<name>/index.ts` per agent
126
+ ├── guardrails/ # place `<name>/index.ts` per guardrail
127
+ └── flows/ # place `<name>/index.ts` per flow
128
+ ```
129
+
130
+ ## Next steps
131
+
132
+ When authoring a primitive, switch to the specific skill:
133
+
134
+ - **Adding a tool** → `kindgi-authoring-tools`
135
+ - **Adding an agent** → `kindgi-authoring-agents`
136
+ - **Adding a guardrail** → `kindgi-authoring-guardrails`
137
+ - **Adding a flow** → `kindgi-authoring-flows`
138
+
139
+ Each of those skills is auto-loaded when working in the corresponding
140
+ folder or when the user's request mentions the primitive kind.
141
+
142
+ ## Two things need the human
143
+
144
+ Most of the setup is automatable, but two require your knowledge:
145
+
146
+ - **The pack id + version** in `kindgi.config.ts` — the pack id
147
+ becomes the namespace prefix (`<pack-id>.<primitive-name>`) for
148
+ every primitive. Pick a stable kebab-case name; changing it later
149
+ breaks all published references.
150
+ - **Real LLM provider credentials** — the built-in dev-echo provider
151
+ returns canned responses (great for the loop test, useless for real
152
+ agents). It is a fallback, so it steps aside once a real provider is
153
+ registered — `kindgi providers register --preset=anthropic` with the
154
+ key in `.env`; see `kindgi-authoring-providers`.
155
+
156
+ ## References
157
+
158
+ - Full CLI surface: `kindgi --help`.
159
+ - SDK hover docs: every `@kindgi/sdk/define` + `@kindgi/sdk/types`
160
+ export ships with JSDoc — hover in your editor.
161
+ - Companion API docs: `pnpm --filter @kindgi/sdk exec typedoc`
162
+ regenerates markdown at `packages/sdk/docs/`.
163
+
164
+ ## Keeping skills up to date
165
+
166
+ Skills in `.claude/skills/` are copied at `kindgi init` time. When the
167
+ framework SDK ships a new version of a skill (better docs, corrected
168
+ example, new capabilities), the pack's local copy stays stale until
169
+ you resync. `kindgi dev` boot prints a warning when it detects drift;
170
+ run `kindgi skills sync` to pull the latest framework skills.
171
+ Local edits are preserved by default (marked `skipped-modified`);
172
+ pass `--force` to overwrite them.
173
+
174
+ ## When the framework itself is the problem
175
+
176
+ Kindgi is early. You will hit rough edges — SDK type drift, wire
177
+ schemas that silently drop a field, misleading error messages, CLI
178
+ friction. When you diagnose that the bug is in the framework (not in
179
+ your pack), load the `kindgi-framework-feedback` skill and file a
180
+ structured report with `kindgi feedback write`. Your diagnostic is
181
+ exactly what the maintainers need.