cfsa-antigravity 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,479 @@
1
+ ---
2
+ name: cli-shell-integration
3
+ description: Shell integration patterns for CLI tools covering completion generation, man pages, piping, signal handling, stdin processing, and cross-platform shell support. Use when building CLI tools that need deep integration with bash, zsh, fish, and PowerShell.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # CLI Shell Integration
8
+
9
+ Build CLI tools that integrate seamlessly with shell environments through completions, piping, signals, and cross-platform support.
10
+
11
+ ## Shell Completion Generation
12
+
13
+ Tab completion is the single most impactful UX feature for CLI tools. Generate completions for all major shells.
14
+
15
+ ### Bash Completions
16
+
17
+ ```bash
18
+ # Generated completion script for bash
19
+ # Install: mycli completion bash > /etc/bash_completion.d/mycli
20
+ # Or: mycli completion bash >> ~/.bashrc
21
+
22
+ _mycli_completions() {
23
+ local cur prev words cword
24
+ _init_completion || return
25
+
26
+ case "${prev}" in
27
+ deploy)
28
+ COMPREPLY=($(compgen -W "staging production dev" -- "${cur}"))
29
+ return
30
+ ;;
31
+ --format|-f)
32
+ COMPREPLY=($(compgen -W "table json csv" -- "${cur}"))
33
+ return
34
+ ;;
35
+ --tag|-t)
36
+ # Dynamic completion: fetch git tags
37
+ COMPREPLY=($(compgen -W "$(git tag 2>/dev/null)" -- "${cur}"))
38
+ return
39
+ ;;
40
+ esac
41
+
42
+ if [[ "${cur}" == -* ]]; then
43
+ COMPREPLY=($(compgen -W "--help --version --verbose --quiet --force --format --tag --dry-run" -- "${cur}"))
44
+ return
45
+ fi
46
+
47
+ COMPREPLY=($(compgen -W "deploy status logs config auth" -- "${cur}"))
48
+ }
49
+
50
+ complete -F _mycli_completions mycli
51
+ ```
52
+
53
+ ### Zsh Completions
54
+
55
+ ```zsh
56
+ # Generated completion script for zsh
57
+ # Install: mycli completion zsh > "${fpath[1]}/_mycli"
58
+
59
+ #compdef mycli
60
+
61
+ _mycli() {
62
+ local -a commands
63
+ commands=(
64
+ 'deploy:Deploy to an environment'
65
+ 'status:Show deployment status'
66
+ 'logs:View application logs'
67
+ 'config:Manage configuration'
68
+ 'auth:Authentication commands'
69
+ )
70
+
71
+ _arguments -C \
72
+ '(-h --help)'{-h,--help}'[Show help]' \
73
+ '(-V --version)'{-V,--version}'[Show version]' \
74
+ '(-v --verbose)'{-v,--verbose}'[Verbose output]' \
75
+ '1:command:->command' \
76
+ '*::arg:->args'
77
+
78
+ case $state in
79
+ command)
80
+ _describe 'command' commands
81
+ ;;
82
+ args)
83
+ case $words[1] in
84
+ deploy)
85
+ _arguments \
86
+ '1:environment:(staging production dev)' \
87
+ '(-t --tag)'{-t,--tag}'[Git tag]:tag:_git_tags' \
88
+ '(-f --force)'{-f,--force}'[Skip confirmation]' \
89
+ '--dry-run[Preview only]' \
90
+ '--no-cache[Build without cache]'
91
+ ;;
92
+ config)
93
+ local -a config_commands
94
+ config_commands=(
95
+ 'get:Get a config value'
96
+ 'set:Set a config value'
97
+ 'list:List all config values'
98
+ )
99
+ _describe 'config command' config_commands
100
+ ;;
101
+ esac
102
+ ;;
103
+ esac
104
+ }
105
+
106
+ _mycli
107
+ ```
108
+
109
+ ### Fish Completions
110
+
111
+ ```fish
112
+ # Generated completion script for fish
113
+ # Install: mycli completion fish > ~/.config/fish/completions/mycli.fish
114
+
115
+ # Disable file completions for mycli
116
+ complete -c mycli -f
117
+
118
+ # Top-level commands
119
+ complete -c mycli -n __fish_use_subcommand -a deploy -d 'Deploy to an environment'
120
+ complete -c mycli -n __fish_use_subcommand -a status -d 'Show deployment status'
121
+ complete -c mycli -n __fish_use_subcommand -a logs -d 'View application logs'
122
+ complete -c mycli -n __fish_use_subcommand -a config -d 'Manage configuration'
123
+
124
+ # Global flags
125
+ complete -c mycli -s h -l help -d 'Show help'
126
+ complete -c mycli -s V -l version -d 'Show version'
127
+ complete -c mycli -s v -l verbose -d 'Verbose output'
128
+
129
+ # Deploy subcommand
130
+ complete -c mycli -n '__fish_seen_subcommand_from deploy' -a 'staging production dev'
131
+ complete -c mycli -n '__fish_seen_subcommand_from deploy' -s t -l tag -d 'Git tag' -r
132
+ complete -c mycli -n '__fish_seen_subcommand_from deploy' -s f -l force -d 'Skip confirmation'
133
+ complete -c mycli -n '__fish_seen_subcommand_from deploy' -l dry-run -d 'Preview only'
134
+ ```
135
+
136
+ ### PowerShell Completions
137
+
138
+ ```powershell
139
+ # Generated completion script for PowerShell
140
+ # Install: mycli completion powershell >> $PROFILE
141
+
142
+ Register-ArgumentCompleter -CommandName mycli -Native -ScriptBlock {
143
+ param($wordToComplete, $commandAst, $cursorPosition)
144
+
145
+ $commands = @{
146
+ 'deploy' = 'Deploy to an environment'
147
+ 'status' = 'Show deployment status'
148
+ 'logs' = 'View application logs'
149
+ 'config' = 'Manage configuration'
150
+ }
151
+
152
+ $words = $commandAst.ToString().Split(' ')
153
+
154
+ if ($words.Count -eq 2) {
155
+ $commands.GetEnumerator() | Where-Object { $_.Key -like "$wordToComplete*" } | ForEach-Object {
156
+ [System.Management.Automation.CompletionResult]::new($_.Key, $_.Key, 'ParameterValue', $_.Value)
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### Programmatic Completion Generation
163
+
164
+ ```typescript
165
+ // Node.js - Generate completions from Commander.js definitions
166
+ import { Command } from 'commander';
167
+
168
+ function generateCompletions(program: Command, shell: 'bash' | 'zsh' | 'fish' | 'powershell'): string {
169
+ const commands = program.commands.map((cmd) => ({
170
+ name: cmd.name(),
171
+ description: cmd.description(),
172
+ options: cmd.options.map((opt) => ({
173
+ short: opt.short,
174
+ long: opt.long,
175
+ description: opt.description,
176
+ required: opt.required,
177
+ })),
178
+ }));
179
+
180
+ switch (shell) {
181
+ case 'bash': return generateBashCompletions(program.name(), commands);
182
+ case 'zsh': return generateZshCompletions(program.name(), commands);
183
+ case 'fish': return generateFishCompletions(program.name(), commands);
184
+ case 'powershell': return generatePowerShellCompletions(program.name(), commands);
185
+ }
186
+ }
187
+
188
+ // Add completion subcommand
189
+ program
190
+ .command('completion')
191
+ .argument('<shell>', 'Shell type: bash, zsh, fish, powershell')
192
+ .description('Generate shell completion script')
193
+ .action((shell) => {
194
+ console.log(generateCompletions(program, shell));
195
+ });
196
+ ```
197
+
198
+ **Rule**: Provide an installation instruction in `mycli completion --help` that tells the user exactly where to put the output.
199
+
200
+ ## Man Page Generation
201
+
202
+ ```typescript
203
+ // Generate man page from Commander.js program definition
204
+ // Uses marked-man or a custom generator
205
+
206
+ function generateManPage(program: Command): string {
207
+ const name = program.name();
208
+ const version = program.version();
209
+
210
+ return `
211
+ .TH ${name.toUpperCase()} 1 "${new Date().toISOString().slice(0, 10)}" "v${version}" "${name} manual"
212
+ .SH NAME
213
+ ${name} \\- ${program.description()}
214
+ .SH SYNOPSIS
215
+ .B ${name}
216
+ [\\fIcommand\\fR]
217
+ [\\fIoptions\\fR]
218
+ .SH DESCRIPTION
219
+ ${program.description()}
220
+ .SH COMMANDS
221
+ ${program.commands.map((cmd) => `.TP\n.B ${cmd.name()}\n${cmd.description()}`).join('\n')}
222
+ .SH OPTIONS
223
+ ${program.options.map((opt) => `.TP\n.BR ${opt.flags}\n${opt.description}`).join('\n')}
224
+ .SH EXIT STATUS
225
+ .TP
226
+ .B 0
227
+ Success
228
+ .TP
229
+ .B 1
230
+ General error
231
+ .TP
232
+ .B 2
233
+ Invalid arguments
234
+ .SH FILES
235
+ .TP
236
+ .I ~/.config/${name}/config.toml
237
+ Global configuration file
238
+ .TP
239
+ .I .${name}.toml
240
+ Project-specific configuration
241
+ .SH BUGS
242
+ Report bugs at https://github.com/example/${name}/issues
243
+ .SH AUTHORS
244
+ Written by the ${name} team.
245
+ `;
246
+ }
247
+ ```
248
+
249
+ ```bash
250
+ # Install man page
251
+ mycli man > /usr/local/share/man/man1/mycli.1
252
+ # Or during package installation:
253
+ install -Dm644 mycli.1 /usr/local/share/man/man1/mycli.1
254
+ ```
255
+
256
+ ## Piping and Streaming Output
257
+
258
+ ### JSON Lines (JSONL / NDJSON)
259
+
260
+ ```typescript
261
+ // Stream output as newline-delimited JSON for piping
262
+ async function streamResults(query: string): Promise<void> {
263
+ const stream = createResultStream(query);
264
+
265
+ for await (const item of stream) {
266
+ // One JSON object per line -- parseable by jq, mlr, and other tools
267
+ process.stdout.write(JSON.stringify(item) + '\n');
268
+ }
269
+ }
270
+
271
+ // Usage: mycli search "query" --format jsonl | jq '.name'
272
+ ```
273
+
274
+ ### CSV Output
275
+
276
+ ```typescript
277
+ function toCsv(data: Record<string, unknown>[]): string {
278
+ if (data.length === 0) return '';
279
+
280
+ const headers = Object.keys(data[0]);
281
+ const rows = data.map((row) =>
282
+ headers.map((h) => {
283
+ const value = String(row[h] ?? '');
284
+ // Escape fields containing commas, quotes, or newlines
285
+ return value.includes(',') || value.includes('"') || value.includes('\n')
286
+ ? `"${value.replace(/"/g, '""')}"`
287
+ : value;
288
+ }).join(',')
289
+ );
290
+
291
+ return [headers.join(','), ...rows].join('\n');
292
+ }
293
+
294
+ // Usage: mycli list --format csv | csvtool col 1,3 -
295
+ ```
296
+
297
+ **Rule**: When `stdout` is piped (not a TTY), default to machine-readable output (JSON). When it is a TTY, default to human-readable output (table).
298
+
299
+ ```typescript
300
+ function defaultFormat(): 'table' | 'json' {
301
+ return process.stdout.isTTY ? 'table' : 'json';
302
+ }
303
+ ```
304
+
305
+ ## Signal Handling
306
+
307
+ ```typescript
308
+ // Graceful shutdown on SIGINT (Ctrl+C) and SIGTERM
309
+ let isShuttingDown = false;
310
+
311
+ async function gracefulShutdown(signal: string): Promise<void> {
312
+ if (isShuttingDown) {
313
+ // Second signal: force exit
314
+ console.error('\nForce exiting...');
315
+ process.exit(130);
316
+ }
317
+
318
+ isShuttingDown = true;
319
+ console.error(`\nReceived ${signal}. Cleaning up...`);
320
+
321
+ try {
322
+ await cleanup(); // Close connections, flush buffers, remove temp files
323
+ process.exit(signal === 'SIGINT' ? 130 : 143);
324
+ } catch (error) {
325
+ console.error(`Cleanup failed: ${(error as Error).message}`);
326
+ process.exit(1);
327
+ }
328
+ }
329
+
330
+ process.on('SIGINT', () => gracefulShutdown('SIGINT'));
331
+ process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
332
+
333
+ // Windows: handle Ctrl+C via readline
334
+ if (process.platform === 'win32') {
335
+ const readline = await import('readline');
336
+ const rl = readline.createInterface({ input: process.stdin });
337
+ rl.on('SIGINT', () => process.emit('SIGINT' as any));
338
+ }
339
+ ```
340
+
341
+ **Rule**: Exit code 130 for SIGINT (128 + signal number 2). Exit code 143 for SIGTERM (128 + signal number 15).
342
+ **Rule**: On first Ctrl+C, clean up gracefully. On second Ctrl+C, exit immediately.
343
+
344
+ ## stdin Input Handling
345
+
346
+ ```typescript
347
+ // Read from stdin when piped, or from file argument
348
+ async function getInput(fileArg?: string): Promise<string> {
349
+ // Explicit file argument
350
+ if (fileArg && fileArg !== '-') {
351
+ return fs.promises.readFile(fileArg, 'utf-8');
352
+ }
353
+
354
+ // Read from stdin (piped or '-' argument)
355
+ if (!process.stdin.isTTY || fileArg === '-') {
356
+ const chunks: Buffer[] = [];
357
+ for await (const chunk of process.stdin) {
358
+ chunks.push(chunk);
359
+ }
360
+ return Buffer.concat(chunks).toString('utf-8');
361
+ }
362
+
363
+ // No input provided
364
+ console.error('Error: No input provided. Pass a filename or pipe data via stdin.');
365
+ console.error(' mycli process input.txt');
366
+ console.error(' cat input.txt | mycli process');
367
+ console.error(' mycli process - # read from stdin explicitly');
368
+ process.exit(2);
369
+ }
370
+
371
+ // Streaming stdin for large inputs
372
+ async function* streamStdin(): AsyncGenerator<string> {
373
+ const rl = readline.createInterface({ input: process.stdin });
374
+ for await (const line of rl) {
375
+ yield line;
376
+ }
377
+ }
378
+ ```
379
+
380
+ **Rule**: `-` as a filename means "read from stdin". This is a Unix convention that many tools follow.
381
+
382
+ ## Shell Alias and Function Patterns
383
+
384
+ ```bash
385
+ # Common patterns users create -- design your CLI to support these
386
+
387
+ # Alias with default flags
388
+ alias deploy='mycli deploy --verbose'
389
+
390
+ # Function wrapper with environment detection
391
+ mydeploy() {
392
+ local env="${1:-staging}"
393
+ mycli deploy "$env" --tag "$(git describe --tags --abbrev=0)"
394
+ }
395
+
396
+ # Pipeline composition
397
+ alias deploy-status='mycli status --format json | jq ".environments[] | select(.status != \"healthy\")"'
398
+ ```
399
+
400
+ **Design for composition**: Output structured data that `jq`, `grep`, `awk`, and `cut` can process.
401
+
402
+ ## PATH Management
403
+
404
+ ```bash
405
+ # Installation should add the binary to a standard PATH location
406
+
407
+ # Option 1: Install to /usr/local/bin (requires sudo)
408
+ sudo install -m 755 mycli /usr/local/bin/mycli
409
+
410
+ # Option 2: Install to ~/.local/bin (no sudo, XDG-friendly)
411
+ install -Dm 755 mycli ~/.local/bin/mycli
412
+ # User adds to PATH in .bashrc/.zshrc: export PATH="$HOME/.local/bin:$PATH"
413
+
414
+ # Option 3: npm global install
415
+ npm install -g mycli # Goes to npm prefix/bin
416
+
417
+ # Option 4: Cargo install
418
+ cargo install mycli # Goes to ~/.cargo/bin
419
+ ```
420
+
421
+ ## Cross-Platform Considerations
422
+
423
+ | Feature | Unix (bash/zsh/fish) | Windows (cmd) | Windows (PowerShell) |
424
+ |---------|---------------------|---------------|---------------------|
425
+ | Path separator | `/` | `\` | `/` or `\` |
426
+ | Env var syntax | `$VAR` | `%VAR%` | `$env:VAR` |
427
+ | Pipe | `\|` | `\|` | `\|` |
428
+ | Redirect | `>`, `2>` | `>`, `2>` | `>`, `2>` |
429
+ | Null device | `/dev/null` | `NUL` | `$null` |
430
+ | Home directory | `$HOME` or `~` | `%USERPROFILE%` | `$HOME` or `~` |
431
+ | Glob expansion | Shell expands `*.txt` | App must expand | PowerShell expands |
432
+ | ANSI colors | Supported | Requires VT support (Win 10+) | Supported |
433
+ | Signals | SIGINT, SIGTERM | Limited (Ctrl+C) | Limited |
434
+
435
+ ```typescript
436
+ // Cross-platform helpers
437
+ import os from 'os';
438
+
439
+ function getHomeDir(): string {
440
+ return os.homedir(); // Works on all platforms
441
+ }
442
+
443
+ function getNullDevice(): string {
444
+ return process.platform === 'win32' ? 'NUL' : '/dev/null';
445
+ }
446
+
447
+ function getPathSeparator(): string {
448
+ return process.platform === 'win32' ? ';' : ':';
449
+ }
450
+
451
+ // Handle Windows glob expansion (Node.js does not expand globs on Windows)
452
+ async function expandGlobs(patterns: string[]): Promise<string[]> {
453
+ if (process.platform !== 'win32') return patterns; // Shell already expanded
454
+
455
+ const { glob } = await import('glob');
456
+ const expanded: string[] = [];
457
+ for (const pattern of patterns) {
458
+ if (pattern.includes('*') || pattern.includes('?')) {
459
+ expanded.push(...await glob(pattern));
460
+ } else {
461
+ expanded.push(pattern);
462
+ }
463
+ }
464
+ return expanded;
465
+ }
466
+ ```
467
+
468
+ ## Output Checklist
469
+
470
+ - [ ] Shell completions generated for bash, zsh, fish, and PowerShell
471
+ - [ ] Completion install instructions included in `mycli completion --help`
472
+ - [ ] Man page generated and installable
473
+ - [ ] Output streams to stdout as JSON Lines when piped
474
+ - [ ] SIGINT/SIGTERM handled with graceful cleanup
475
+ - [ ] Second Ctrl+C forces immediate exit
476
+ - [ ] stdin accepted via pipe or `-` argument
477
+ - [ ] Output format auto-detected based on TTY status
478
+ - [ ] Cross-platform path and signal handling
479
+ - [ ] Binary installs to a standard PATH location