cfsa-antigravity 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +14 -0
  2. package/package.json +1 -1
  3. package/template/.agent/instructions/commands.md +8 -32
  4. package/template/.agent/instructions/patterns.md +3 -3
  5. package/template/.agent/instructions/tech-stack.md +71 -23
  6. package/template/.agent/instructions/workflow.md +12 -1
  7. package/template/.agent/rules/completion-checklist.md +6 -0
  8. package/template/.agent/rules/security-first.md +3 -3
  9. package/template/.agent/rules/vertical-slices.md +1 -1
  10. package/template/.agent/skill-library/MANIFEST.md +6 -0
  11. package/template/.agent/skill-library/stack/devops/git-advanced/SKILL.md +972 -0
  12. package/template/.agent/skill-library/stack/devops/git-workflow/SKILL.md +420 -0
  13. package/template/.agent/skills/api-versioning/SKILL.md +44 -298
  14. package/template/.agent/skills/api-versioning/references/typescript.md +157 -0
  15. package/template/.agent/skills/architecture-mapping/SKILL.md +7 -7
  16. package/template/.agent/skills/bootstrap-agents/SKILL.md +151 -152
  17. package/template/.agent/skills/clean-code/SKILL.md +64 -118
  18. package/template/.agent/skills/clean-code/references/typescript.md +126 -0
  19. package/template/.agent/skills/database-schema-design/SKILL.md +93 -317
  20. package/template/.agent/skills/database-schema-design/references/relational.md +228 -0
  21. package/template/.agent/skills/error-handling-patterns/SKILL.md +62 -557
  22. package/template/.agent/skills/error-handling-patterns/references/go.md +162 -0
  23. package/template/.agent/skills/error-handling-patterns/references/python.md +262 -0
  24. package/template/.agent/skills/error-handling-patterns/references/rust.md +112 -0
  25. package/template/.agent/skills/error-handling-patterns/references/typescript.md +178 -0
  26. package/template/.agent/skills/idea-extraction/SKILL.md +119 -12
  27. package/template/.agent/skills/logging-best-practices/SKILL.md +108 -767
  28. package/template/.agent/skills/logging-best-practices/references/go.md +49 -0
  29. package/template/.agent/skills/logging-best-practices/references/python.md +52 -0
  30. package/template/.agent/skills/logging-best-practices/references/typescript.md +215 -0
  31. package/template/.agent/skills/migration-management/SKILL.md +127 -311
  32. package/template/.agent/skills/migration-management/references/relational.md +214 -0
  33. package/template/.agent/skills/parallel-feature-development/SKILL.md +34 -43
  34. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +1 -1
  35. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +1 -1
  36. package/template/.agent/skills/prd-templates/SKILL.md +20 -3
  37. package/template/.agent/skills/prd-templates/references/be-spec-template.md +2 -2
  38. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +2 -2
  39. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +1 -1
  40. package/template/.agent/skills/prd-templates/references/ideation-domain-template.md +8 -2
  41. package/template/.agent/skills/prd-templates/references/ideation-index-template.md +25 -1
  42. package/template/.agent/skills/prd-templates/references/operational-templates.md +1 -1
  43. package/template/.agent/skills/prd-templates/references/placeholder-workflow-mapping.md +50 -21
  44. package/template/.agent/skills/prd-templates/references/skill-loading-protocol.md +32 -0
  45. package/template/.agent/skills/prd-templates/references/slice-completion-gates.md +21 -0
  46. package/template/.agent/skills/prd-templates/references/spec-coverage-sweep.md +3 -3
  47. package/template/.agent/skills/prd-templates/references/tdd-testing-policy.md +39 -0
  48. package/template/.agent/skills/prd-templates/references/vision-template.md +1 -1
  49. package/template/.agent/skills/regex-patterns/SKILL.md +122 -540
  50. package/template/.agent/skills/regex-patterns/references/go.md +44 -0
  51. package/template/.agent/skills/regex-patterns/references/javascript.md +63 -0
  52. package/template/.agent/skills/regex-patterns/references/python.md +77 -0
  53. package/template/.agent/skills/regex-patterns/references/rust.md +43 -0
  54. package/template/.agent/skills/session-continuity/SKILL.md +11 -9
  55. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +2 -2
  56. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +1 -1
  57. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +1 -1
  58. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +1 -1
  59. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +57 -78
  60. package/template/.agent/skills/session-continuity/protocols/11-parallel-synthesis.md +1 -1
  61. package/template/.agent/skills/tdd-workflow/SKILL.md +94 -317
  62. package/template/.agent/skills/tdd-workflow/references/typescript.md +231 -0
  63. package/template/.agent/skills/testing-strategist/SKILL.md +74 -687
  64. package/template/.agent/skills/testing-strategist/references/typescript.md +328 -0
  65. package/template/.agent/skills/workflow-automation/SKILL.md +62 -154
  66. package/template/.agent/skills/workflow-automation/references/inngest.md +88 -0
  67. package/template/.agent/skills/workflow-automation/references/temporal.md +64 -0
  68. package/template/.agent/workflows/bootstrap-agents-fill.md +85 -143
  69. package/template/.agent/workflows/bootstrap-agents-provision.md +90 -107
  70. package/template/.agent/workflows/create-prd-architecture.md +16 -14
  71. package/template/.agent/workflows/create-prd-compile.md +11 -12
  72. package/template/.agent/workflows/create-prd-design-system.md +1 -1
  73. package/template/.agent/workflows/create-prd-security.md +9 -11
  74. package/template/.agent/workflows/create-prd-stack.md +10 -4
  75. package/template/.agent/workflows/create-prd.md +5 -6
  76. package/template/.agent/workflows/decompose-architecture-structure.md +3 -5
  77. package/template/.agent/workflows/decompose-architecture-validate.md +18 -1
  78. package/template/.agent/workflows/evolve-contract.md +11 -11
  79. package/template/.agent/workflows/ideate-discover.md +10 -6
  80. package/template/.agent/workflows/ideate-extract.md +61 -4
  81. package/template/.agent/workflows/ideate-validate.md +3 -3
  82. package/template/.agent/workflows/ideate.md +2 -2
  83. package/template/.agent/workflows/implement-slice-setup.md +25 -23
  84. package/template/.agent/workflows/implement-slice-tdd.md +51 -92
  85. package/template/.agent/workflows/implement-slice.md +4 -4
  86. package/template/.agent/workflows/plan-phase-preflight.md +6 -2
  87. package/template/.agent/workflows/plan-phase-write.md +6 -8
  88. package/template/.agent/workflows/resolve-ambiguity.md +1 -1
  89. package/template/.agent/workflows/update-architecture-map.md +22 -5
  90. package/template/.agent/workflows/validate-phase.md +26 -29
  91. package/template/.agent/workflows/verify-infrastructure.md +10 -10
  92. package/template/.agent/workflows/write-architecture-spec-design.md +17 -12
  93. package/template/.agent/workflows/write-be-spec-classify.md +25 -21
  94. package/template/.agent/workflows/write-be-spec.md +1 -1
  95. package/template/.agent/workflows/write-fe-spec-classify.md +6 -12
  96. package/template/.agent/workflows/write-fe-spec-write.md +1 -1
  97. package/template/AGENTS.md +1 -1
  98. package/template/GEMINI.md +3 -3
  99. package/template/docs/kit-architecture.md +34 -8
@@ -0,0 +1,49 @@
1
+ # Go Logging Patterns
2
+
3
+ Language-specific patterns for the `logging-best-practices` skill. Read `SKILL.md` first for universal methodology.
4
+
5
+ ---
6
+
7
+ ## Libraries
8
+
9
+ | Library | Use Case |
10
+ |---------|----------|
11
+ | **zap** | High-performance structured logging |
12
+ | **zerolog** | Zero-allocation JSON logger |
13
+
14
+ ## zap Setup
15
+
16
+ ```go
17
+ package main
18
+
19
+ import "go.uber.org/zap"
20
+
21
+ func main() {
22
+ // Production config (JSON output)
23
+ logger, _ := zap.NewProduction()
24
+ defer logger.Sync()
25
+
26
+ // Development config (human-readable)
27
+ // logger, _ := zap.NewDevelopment()
28
+
29
+ logger.Info("User created",
30
+ zap.String("userId", user.ID),
31
+ zap.String("email", user.Email),
32
+ zap.String("requestId", req.ID),
33
+ )
34
+
35
+ logger.Error("Payment processing failed",
36
+ zap.Error(err),
37
+ zap.String("orderId", order.ID),
38
+ zap.Float64("amount", order.Total),
39
+ zap.String("userId", user.ID),
40
+ )
41
+
42
+ // Sugared logger for convenience (slightly slower)
43
+ sugar := logger.Sugar()
44
+ sugar.Infow("User login",
45
+ "userId", user.ID,
46
+ "ip", req.IP,
47
+ )
48
+ }
49
+ ```
@@ -0,0 +1,52 @@
1
+ # Python Logging Patterns
2
+
3
+ Language-specific patterns for the `logging-best-practices` skill. Read `SKILL.md` first for universal methodology.
4
+
5
+ ---
6
+
7
+ ## Libraries
8
+
9
+ | Library | Use Case |
10
+ |---------|----------|
11
+ | **structlog** | Structured logging with processors |
12
+ | **logging** | Standard library (structlog wraps it) |
13
+
14
+ ## structlog Setup
15
+
16
+ ```python
17
+ import structlog
18
+ import logging
19
+
20
+ structlog.configure(
21
+ processors=[
22
+ structlog.stdlib.filter_by_level,
23
+ structlog.stdlib.add_logger_name,
24
+ structlog.stdlib.add_log_level,
25
+ structlog.stdlib.PositionalArgumentsFormatter(),
26
+ structlog.processors.TimeStamper(fmt="iso"),
27
+ structlog.processors.StackInfoRenderer(),
28
+ structlog.processors.format_exc_info,
29
+ structlog.processors.UnicodeDecoder(),
30
+ structlog.processors.JSONRenderer()
31
+ ],
32
+ context_class=dict,
33
+ logger_factory=structlog.stdlib.LoggerFactory(),
34
+ cache_logger_on_first_use=True,
35
+ )
36
+
37
+ logger = structlog.get_logger()
38
+
39
+ # Usage
40
+ logger.info("user_created",
41
+ user_id=user.id,
42
+ email=user.email,
43
+ request_id=request.id
44
+ )
45
+
46
+ logger.error("payment_failed",
47
+ error=str(error),
48
+ order_id=order.id,
49
+ amount=order.total,
50
+ user_id=user.id
51
+ )
52
+ ```
@@ -0,0 +1,215 @@
1
+ # TypeScript Logging Patterns
2
+
3
+ Language-specific patterns for the `logging-best-practices` skill. Read `SKILL.md` first for universal methodology.
4
+
5
+ ---
6
+
7
+ ## Libraries
8
+
9
+ | Library | Use Case |
10
+ |---------|----------|
11
+ | **Winston** | Versatile, multi-transport, production-ready |
12
+ | **Pino** | High-performance JSON logger |
13
+ | **OpenTelemetry SDK** | Distributed tracing |
14
+
15
+ ## Winston Setup
16
+
17
+ ```typescript
18
+ import winston from 'winston';
19
+
20
+ const logger = winston.createLogger({
21
+ level: process.env.LOG_LEVEL || 'info',
22
+ format: winston.format.combine(
23
+ winston.format.timestamp(),
24
+ winston.format.errors({ stack: true }),
25
+ winston.format.json()
26
+ ),
27
+ defaultMeta: {
28
+ service: 'user-service',
29
+ environment: process.env.NODE_ENV
30
+ },
31
+ transports: [
32
+ new winston.transports.Console({
33
+ format: winston.format.combine(
34
+ winston.format.colorize(),
35
+ winston.format.simple()
36
+ )
37
+ }),
38
+ new winston.transports.File({
39
+ filename: 'logs/error.log',
40
+ level: 'error',
41
+ maxsize: 5242880, maxFiles: 5
42
+ }),
43
+ new winston.transports.File({
44
+ filename: 'logs/combined.log',
45
+ maxsize: 5242880, maxFiles: 5
46
+ })
47
+ ]
48
+ });
49
+
50
+ logger.info('User created', { userId: user.id, requestId: req.id });
51
+ logger.error('Payment failed', { error: error.message, stack: error.stack, orderId: order.id });
52
+ ```
53
+
54
+ ## Request Context Middleware
55
+
56
+ ```typescript
57
+ import { v4 as uuidv4 } from 'uuid';
58
+ import { AsyncLocalStorage } from 'async_hooks';
59
+
60
+ const asyncLocalStorage = new AsyncLocalStorage();
61
+
62
+ export function requestLogger(req, res, next) {
63
+ const requestId = req.headers['x-request-id'] || uuidv4();
64
+ const context = {
65
+ requestId, method: req.method, path: req.path,
66
+ ip: req.ip, userId: req.user?.id
67
+ };
68
+
69
+ asyncLocalStorage.run(context, () => {
70
+ logger.info('Request started', context);
71
+ res.on('finish', () => {
72
+ logger.info('Request completed', {
73
+ ...context, statusCode: res.statusCode,
74
+ duration: Date.now() - req.startTime
75
+ });
76
+ });
77
+ req.startTime = Date.now();
78
+ next();
79
+ });
80
+ }
81
+
82
+ export function getLogger() {
83
+ const context = asyncLocalStorage.getStore();
84
+ return {
85
+ info: (message: string, meta?: object) =>
86
+ logger.info(message, { ...context, ...meta }),
87
+ error: (message: string, error: Error, meta?: object) =>
88
+ logger.error(message, { ...context, error, ...meta }),
89
+ warn: (message: string, meta?: object) =>
90
+ logger.warn(message, { ...context, ...meta }),
91
+ debug: (message: string, meta?: object) =>
92
+ logger.debug(message, { ...context, ...meta })
93
+ };
94
+ }
95
+ ```
96
+
97
+ ## PII Sanitization
98
+
99
+ ```typescript
100
+ const SENSITIVE_FIELDS = ['password', 'token', 'apiKey', 'ssn', 'creditCard', 'email', 'phone'];
101
+
102
+ function sanitize(obj: any): any {
103
+ if (typeof obj !== 'object' || obj === null) return obj;
104
+ if (Array.isArray(obj)) return obj.map(sanitize);
105
+
106
+ const sanitized = {};
107
+ for (const [key, value] of Object.entries(obj)) {
108
+ if (SENSITIVE_FIELDS.some(f => key.toLowerCase().includes(f.toLowerCase()))) {
109
+ sanitized[key] = '[REDACTED]';
110
+ } else if (typeof value === 'object') {
111
+ sanitized[key] = sanitize(value);
112
+ } else {
113
+ sanitized[key] = value;
114
+ }
115
+ }
116
+ return sanitized;
117
+ }
118
+
119
+ function maskEmail(email: string): string {
120
+ const [local, domain] = email.split('@');
121
+ return `${local[0]}${'*'.repeat(local.length - 2)}${local[local.length - 1]}@${domain}`;
122
+ }
123
+ ```
124
+
125
+ ## Performance Logger
126
+
127
+ ```typescript
128
+ class PerformanceLogger {
129
+ private timers = new Map<string, number>();
130
+
131
+ start(op: string) { this.timers.set(op, Date.now()); }
132
+
133
+ end(op: string, meta?: object) {
134
+ const start = this.timers.get(op);
135
+ if (!start) return;
136
+ const duration = Date.now() - start;
137
+ this.timers.delete(op);
138
+ logger.info(`Performance: ${op}`, { operation: op, durationMs: duration, ...meta });
139
+ if (duration > 1000) {
140
+ logger.warn(`Slow operation: ${op}`, { operation: op, durationMs: duration, threshold: 1000, ...meta });
141
+ }
142
+ }
143
+
144
+ async measure<T>(op: string, fn: () => Promise<T>, meta?: object): Promise<T> {
145
+ this.start(op);
146
+ try { return await fn(); } finally { this.end(op, meta); }
147
+ }
148
+ }
149
+ ```
150
+
151
+ ## Distributed Tracing (OpenTelemetry)
152
+
153
+ ```typescript
154
+ import opentelemetry from '@opentelemetry/api';
155
+ import { NodeTracerProvider } from '@opentelemetry/node';
156
+ import { SimpleSpanProcessor } from '@opentelemetry/tracing';
157
+ import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
158
+
159
+ const provider = new NodeTracerProvider();
160
+ provider.addSpanProcessor(
161
+ new SimpleSpanProcessor(new JaegerExporter({
162
+ serviceName: 'user-service',
163
+ endpoint: 'http://jaeger:14268/api/traces'
164
+ }))
165
+ );
166
+ provider.register();
167
+
168
+ const tracer = opentelemetry.trace.getTracer('user-service');
169
+
170
+ app.get('/api/users/:id', async (req, res) => {
171
+ const span = tracer.startSpan('get-user', {
172
+ attributes: { 'http.method': req.method, 'http.url': req.url }
173
+ });
174
+ try {
175
+ const user = await fetchUser(req.params.id);
176
+ span.setStatus({ code: opentelemetry.SpanStatusCode.OK });
177
+ res.json(user);
178
+ } catch (error) {
179
+ span.setStatus({ code: opentelemetry.SpanStatusCode.ERROR, message: error.message });
180
+ res.status(500).json({ error: 'Internal server error' });
181
+ } finally {
182
+ span.end();
183
+ }
184
+ });
185
+ ```
186
+
187
+ ## Centralized Logging (ELK + Winston)
188
+
189
+ ```typescript
190
+ import 'winston-logstash';
191
+
192
+ const elkLogger = winston.createLogger({
193
+ transports: [
194
+ new winston.transports.Logstash({
195
+ port: 5000, host: 'logstash',
196
+ node_name: 'user-service', max_connect_retries: -1
197
+ })
198
+ ]
199
+ });
200
+ ```
201
+
202
+ ## Log Sampling
203
+
204
+ ```typescript
205
+ class SamplingLogger {
206
+ constructor(private logger: Logger, private sampleRate = 0.1) {}
207
+
208
+ info(message: string, meta?: object) {
209
+ if (Math.random() < this.sampleRate) this.logger.info(message, meta);
210
+ }
211
+
212
+ warn(message: string, meta?: object) { this.logger.warn(message, meta); }
213
+ error(message: string, error: Error, meta?: object) { this.logger.error(message, error, meta); }
214
+ }
215
+ ```