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,554 @@
1
+ ---
2
+ name: github-actions
3
+ description: Build CI/CD pipelines with GitHub Actions including workflow syntax, triggers, caching, matrix builds, secrets, reusable workflows, and deployment protection. Use when automating testing, building, deploying, or any repository automation with GitHub Actions.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # GitHub Actions CI/CD
8
+
9
+ Build CI/CD pipelines and repository automation with GitHub Actions. GitHub Actions uses YAML workflow files triggered by repository events to run jobs on hosted or self-hosted runners.
10
+
11
+ ## When to Use This Skill
12
+
13
+ - Automating test suites on pull requests
14
+ - Building and deploying applications
15
+ - Publishing packages to npm, Docker Hub, or other registries
16
+ - Running scheduled maintenance tasks
17
+ - Enforcing code quality gates (lint, type-check, coverage)
18
+ - Automating release workflows
19
+
20
+ ## Workflow Structure
21
+
22
+ ```
23
+ .github/
24
+ workflows/
25
+ ci.yml # Continuous integration
26
+ deploy.yml # Deployment pipeline
27
+ release.yml # Release automation
28
+ actions/
29
+ setup/ # Composite action for shared setup
30
+ action.yml
31
+ ```
32
+
33
+ ## Workflow Syntax
34
+
35
+ ### Basic CI Workflow
36
+
37
+ ```yaml
38
+ # .github/workflows/ci.yml
39
+ name: CI
40
+
41
+ on:
42
+ push:
43
+ branches: [main]
44
+ pull_request:
45
+ branches: [main]
46
+
47
+ # Cancel in-progress runs for the same branch/PR
48
+ concurrency:
49
+ group: ci-${{ github.ref }}
50
+ cancel-in-progress: true
51
+
52
+ jobs:
53
+ lint-and-typecheck:
54
+ name: Lint & Type Check
55
+ runs-on: ubuntu-latest
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+
59
+ - uses: pnpm/action-setup@v4
60
+ with:
61
+ version: 9
62
+
63
+ - uses: actions/setup-node@v4
64
+ with:
65
+ node-version: 22
66
+ cache: 'pnpm'
67
+
68
+ - run: pnpm install --frozen-lockfile
69
+
70
+ - run: pnpm lint
71
+ - run: pnpm type-check
72
+
73
+ test:
74
+ name: Test
75
+ runs-on: ubuntu-latest
76
+ needs: lint-and-typecheck
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+
80
+ - uses: pnpm/action-setup@v4
81
+ with:
82
+ version: 9
83
+
84
+ - uses: actions/setup-node@v4
85
+ with:
86
+ node-version: 22
87
+ cache: 'pnpm'
88
+
89
+ - run: pnpm install --frozen-lockfile
90
+ - run: pnpm test -- --coverage
91
+
92
+ - name: Upload coverage
93
+ uses: actions/upload-artifact@v4
94
+ with:
95
+ name: coverage
96
+ path: coverage/
97
+ retention-days: 7
98
+
99
+ build:
100
+ name: Build
101
+ runs-on: ubuntu-latest
102
+ needs: test
103
+ steps:
104
+ - uses: actions/checkout@v4
105
+
106
+ - uses: pnpm/action-setup@v4
107
+ with:
108
+ version: 9
109
+
110
+ - uses: actions/setup-node@v4
111
+ with:
112
+ node-version: 22
113
+ cache: 'pnpm'
114
+
115
+ - run: pnpm install --frozen-lockfile
116
+ - run: pnpm build
117
+
118
+ - name: Upload build artifacts
119
+ uses: actions/upload-artifact@v4
120
+ with:
121
+ name: build
122
+ path: dist/
123
+ retention-days: 1
124
+ ```
125
+
126
+ ## Triggers
127
+
128
+ ### Common Trigger Patterns
129
+
130
+ ```yaml
131
+ on:
132
+ # Push to specific branches
133
+ push:
134
+ branches: [main, 'release/**']
135
+ paths-ignore:
136
+ - '**.md'
137
+ - 'docs/**'
138
+
139
+ # Pull requests
140
+ pull_request:
141
+ branches: [main]
142
+ types: [opened, synchronize, reopened]
143
+
144
+ # Manual trigger with inputs
145
+ workflow_dispatch:
146
+ inputs:
147
+ environment:
148
+ description: 'Target environment'
149
+ required: true
150
+ type: choice
151
+ options: [staging, production]
152
+ dry_run:
153
+ description: 'Dry run (no actual deploy)'
154
+ type: boolean
155
+ default: false
156
+
157
+ # Scheduled (cron)
158
+ schedule:
159
+ - cron: '0 6 * * 1' # Every Monday at 6:00 AM UTC
160
+
161
+ # On release
162
+ release:
163
+ types: [published]
164
+
165
+ # Triggered by another workflow
166
+ workflow_call:
167
+ inputs:
168
+ node-version:
169
+ type: string
170
+ default: '22'
171
+ secrets:
172
+ DEPLOY_KEY:
173
+ required: true
174
+ ```
175
+
176
+ ### Path Filtering
177
+
178
+ ```yaml
179
+ on:
180
+ push:
181
+ branches: [main]
182
+ # Only run when these paths change
183
+ paths:
184
+ - 'src/**'
185
+ - 'package.json'
186
+ - 'pnpm-lock.yaml'
187
+ - '.github/workflows/ci.yml'
188
+ ```
189
+
190
+ ## Matrix Strategy
191
+
192
+ ```yaml
193
+ jobs:
194
+ test:
195
+ runs-on: ${{ matrix.os }}
196
+ strategy:
197
+ fail-fast: false # Don't cancel other jobs if one fails
198
+ matrix:
199
+ os: [ubuntu-latest, macos-latest]
200
+ node-version: [20, 22]
201
+ # Exclude specific combinations
202
+ exclude:
203
+ - os: macos-latest
204
+ node-version: 20
205
+ # Add specific combinations
206
+ include:
207
+ - os: ubuntu-latest
208
+ node-version: 22
209
+ coverage: true
210
+ steps:
211
+ - uses: actions/checkout@v4
212
+ - uses: actions/setup-node@v4
213
+ with:
214
+ node-version: ${{ matrix.node-version }}
215
+ - run: pnpm test
216
+ - if: matrix.coverage
217
+ run: pnpm test -- --coverage
218
+ ```
219
+
220
+ ## Caching
221
+
222
+ ### Dependency Caching
223
+
224
+ ```yaml
225
+ # Option 1: Built-in cache with setup-node
226
+ - uses: actions/setup-node@v4
227
+ with:
228
+ node-version: 22
229
+ cache: 'pnpm' # Automatically caches pnpm store
230
+
231
+ # Option 2: Manual cache for custom paths
232
+ - uses: actions/cache@v4
233
+ id: build-cache
234
+ with:
235
+ path: |
236
+ ~/.cache
237
+ node_modules/.cache
238
+ .next/cache
239
+ key: build-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('src/**') }}
240
+ restore-keys: |
241
+ build-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-
242
+ build-${{ runner.os }}-
243
+ ```
244
+
245
+ ### Turbo Cache
246
+
247
+ ```yaml
248
+ - uses: actions/cache@v4
249
+ with:
250
+ path: node_modules/.cache/turbo
251
+ key: turbo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
252
+ restore-keys: |
253
+ turbo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-
254
+ ```
255
+
256
+ ## Secrets Management
257
+
258
+ ```yaml
259
+ jobs:
260
+ deploy:
261
+ runs-on: ubuntu-latest
262
+ environment: production # References a GitHub environment
263
+ steps:
264
+ - run: deploy --token ${{ secrets.DEPLOY_TOKEN }}
265
+ env:
266
+ DATABASE_URL: ${{ secrets.DATABASE_URL }}
267
+ API_KEY: ${{ secrets.API_KEY }}
268
+
269
+ # NEVER echo secrets
270
+ # NEVER use secrets in if conditions (logs may leak)
271
+ # NEVER pass secrets as command-line arguments (visible in process list)
272
+ ```
273
+
274
+ ### OIDC for Cloud Providers (No Static Secrets)
275
+
276
+ ```yaml
277
+ jobs:
278
+ deploy-aws:
279
+ runs-on: ubuntu-latest
280
+ permissions:
281
+ id-token: write # Required for OIDC
282
+ contents: read
283
+ steps:
284
+ - uses: aws-actions/configure-aws-credentials@v4
285
+ with:
286
+ role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
287
+ aws-region: us-east-1
288
+ # No AWS_ACCESS_KEY_ID or AWS_SECRET_ACCESS_KEY needed
289
+ ```
290
+
291
+ ## Environment Protection Rules
292
+
293
+ ```yaml
294
+ jobs:
295
+ deploy-staging:
296
+ runs-on: ubuntu-latest
297
+ environment: staging
298
+ steps:
299
+ - run: deploy-to-staging.sh
300
+
301
+ deploy-production:
302
+ runs-on: ubuntu-latest
303
+ needs: deploy-staging
304
+ environment:
305
+ name: production
306
+ url: https://app.example.com
307
+ # Environment can require:
308
+ # - Manual approval from specific reviewers
309
+ # - Wait timer (e.g., 15 minutes)
310
+ # - Branch restrictions (only main)
311
+ steps:
312
+ - run: deploy-to-production.sh
313
+ ```
314
+
315
+ ## Composite Actions
316
+
317
+ Reusable setup steps shared across workflows.
318
+
319
+ ```yaml
320
+ # .github/actions/setup/action.yml
321
+ name: 'Project Setup'
322
+ description: 'Install dependencies and setup environment'
323
+
324
+ inputs:
325
+ node-version:
326
+ description: 'Node.js version'
327
+ default: '22'
328
+
329
+ runs:
330
+ using: 'composite'
331
+ steps:
332
+ - uses: pnpm/action-setup@v4
333
+ with:
334
+ version: 9
335
+
336
+ - uses: actions/setup-node@v4
337
+ with:
338
+ node-version: ${{ inputs.node-version }}
339
+ cache: 'pnpm'
340
+
341
+ - run: pnpm install --frozen-lockfile
342
+ shell: bash
343
+ ```
344
+
345
+ ```yaml
346
+ # Usage in workflows
347
+ steps:
348
+ - uses: actions/checkout@v4
349
+ - uses: ./.github/actions/setup
350
+ with:
351
+ node-version: '22'
352
+ - run: pnpm test
353
+ ```
354
+
355
+ ## Reusable Workflows
356
+
357
+ ```yaml
358
+ # .github/workflows/reusable-deploy.yml
359
+ name: Reusable Deploy
360
+
361
+ on:
362
+ workflow_call:
363
+ inputs:
364
+ environment:
365
+ required: true
366
+ type: string
367
+ app-url:
368
+ required: true
369
+ type: string
370
+ secrets:
371
+ DEPLOY_KEY:
372
+ required: true
373
+
374
+ jobs:
375
+ deploy:
376
+ runs-on: ubuntu-latest
377
+ environment:
378
+ name: ${{ inputs.environment }}
379
+ url: ${{ inputs.app-url }}
380
+ steps:
381
+ - uses: actions/checkout@v4
382
+ - uses: ./.github/actions/setup
383
+ - run: pnpm build
384
+ - run: deploy --env ${{ inputs.environment }}
385
+ env:
386
+ DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
387
+ ```
388
+
389
+ ```yaml
390
+ # Calling the reusable workflow
391
+ # .github/workflows/deploy.yml
392
+ name: Deploy
393
+
394
+ on:
395
+ push:
396
+ branches: [main]
397
+
398
+ jobs:
399
+ deploy-staging:
400
+ uses: ./.github/workflows/reusable-deploy.yml
401
+ with:
402
+ environment: staging
403
+ app-url: https://staging.example.com
404
+ secrets:
405
+ DEPLOY_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}
406
+
407
+ deploy-production:
408
+ needs: deploy-staging
409
+ uses: ./.github/workflows/reusable-deploy.yml
410
+ with:
411
+ environment: production
412
+ app-url: https://app.example.com
413
+ secrets:
414
+ DEPLOY_KEY: ${{ secrets.PRODUCTION_DEPLOY_KEY }}
415
+ ```
416
+
417
+ ## Concurrency Groups
418
+
419
+ ```yaml
420
+ # Prevent concurrent deployments to the same environment
421
+ concurrency:
422
+ group: deploy-${{ inputs.environment }}
423
+ cancel-in-progress: false # Queue, don't cancel
424
+
425
+ # Cancel superseded CI runs on the same PR
426
+ concurrency:
427
+ group: ci-${{ github.event.pull_request.number || github.ref }}
428
+ cancel-in-progress: true
429
+ ```
430
+
431
+ ## Artifact Handling
432
+
433
+ ```yaml
434
+ # Upload
435
+ - uses: actions/upload-artifact@v4
436
+ with:
437
+ name: test-results
438
+ path: |
439
+ test-results/
440
+ coverage/
441
+ retention-days: 30
442
+ if-no-files-found: error # 'warn' or 'ignore'
443
+
444
+ # Download in another job
445
+ - uses: actions/download-artifact@v4
446
+ with:
447
+ name: test-results
448
+ path: ./downloaded-results
449
+ ```
450
+
451
+ ## Service Containers
452
+
453
+ ```yaml
454
+ jobs:
455
+ integration-test:
456
+ runs-on: ubuntu-latest
457
+ services:
458
+ postgres:
459
+ image: postgres:16
460
+ env:
461
+ POSTGRES_USER: test
462
+ POSTGRES_PASSWORD: test
463
+ POSTGRES_DB: testdb
464
+ ports:
465
+ - 5432:5432
466
+ options: >-
467
+ --health-cmd pg_isready
468
+ --health-interval 10s
469
+ --health-timeout 5s
470
+ --health-retries 5
471
+
472
+ redis:
473
+ image: redis:7
474
+ ports:
475
+ - 6379:6379
476
+
477
+ steps:
478
+ - uses: actions/checkout@v4
479
+ - uses: ./.github/actions/setup
480
+ - run: pnpm test:integration
481
+ env:
482
+ DATABASE_URL: postgres://test:test@localhost:5432/testdb
483
+ REDIS_URL: redis://localhost:6379
484
+ ```
485
+
486
+ ## Conditional Execution
487
+
488
+ ```yaml
489
+ steps:
490
+ # Run only on main branch
491
+ - if: github.ref == 'refs/heads/main'
492
+ run: pnpm deploy
493
+
494
+ # Run only on PRs
495
+ - if: github.event_name == 'pull_request'
496
+ run: pnpm test -- --coverage
497
+
498
+ # Run only when specific files changed
499
+ - uses: dorny/paths-filter@v3
500
+ id: changes
501
+ with:
502
+ filters: |
503
+ backend:
504
+ - 'server/**'
505
+ frontend:
506
+ - 'src/**'
507
+
508
+ - if: steps.changes.outputs.backend == 'true'
509
+ run: pnpm test:backend
510
+
511
+ - if: steps.changes.outputs.frontend == 'true'
512
+ run: pnpm test:frontend
513
+
514
+ # Continue on error
515
+ - run: pnpm lint
516
+ continue-on-error: true
517
+
518
+ # Run even if previous steps failed
519
+ - if: always()
520
+ run: cleanup.sh
521
+
522
+ # Run only on failure
523
+ - if: failure()
524
+ run: notify-slack.sh
525
+ ```
526
+
527
+ ## Anti-Patterns
528
+
529
+ | Anti-Pattern | Correct Approach |
530
+ |-------------|-----------------|
531
+ | Installing dependencies in every job | Use composite actions or cache restoration |
532
+ | Using `actions/checkout@v2` or other old versions | Always use latest major: `@v4` |
533
+ | Hardcoding secrets in workflow files | Use `secrets` context and GitHub Secrets |
534
+ | Running all tests on every change | Use path filters and matrix to run relevant tests |
535
+ | Using `continue-on-error: true` to hide failures | Fix the underlying issue; use it only for non-blocking checks |
536
+ | Not setting `concurrency` on deploy workflows | Concurrent deploys cause race conditions |
537
+ | Using `pull_request_target` without understanding security | `pull_request_target` runs with write access -- review carefully |
538
+ | Not pinning action versions | Pin to SHA or major version: `actions/checkout@v4` minimum |
539
+
540
+ ## Permissions (Least Privilege)
541
+
542
+ ```yaml
543
+ # Set minimal permissions at the workflow level
544
+ permissions:
545
+ contents: read
546
+ pull-requests: write # Only if needed (e.g., commenting on PRs)
547
+
548
+ jobs:
549
+ deploy:
550
+ permissions:
551
+ contents: read
552
+ id-token: write # For OIDC
553
+ deployments: write # For deployment status
554
+ ```