workflow-agent-cli 2.4.3 → 2.7.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.
@@ -22,28 +22,30 @@
22
22
 
23
23
  Initiate pattern analysis when:
24
24
 
25
- | Trigger | Description |
26
- |---------|-------------|
27
- | **Post-fix success** | A quality issue was detected and auto-fixed successfully |
28
- | **User request** | User explicitly asks to "analyze patterns" or "record what we learned" |
29
- | **Project setup complete** | A new project was scaffolded and configured successfully |
30
- | **Migration complete** | A framework upgrade or refactor was completed without issues |
31
- | **CI/CD passing** | All quality checks pass after non-trivial changes |
25
+ | Trigger | Description |
26
+ | -------------------------- | ---------------------------------------------------------------------- |
27
+ | **Post-fix success** | A quality issue was detected and auto-fixed successfully |
28
+ | **User request** | User explicitly asks to "analyze patterns" or "record what we learned" |
29
+ | **Project setup complete** | A new project was scaffolded and configured successfully |
30
+ | **Migration complete** | A framework upgrade or refactor was completed without issues |
31
+ | **CI/CD passing** | All quality checks pass after non-trivial changes |
32
32
 
33
33
  ---
34
34
 
35
35
  ## Phase 1: Discovery
36
36
 
37
37
  ### Objective
38
+
38
39
  Identify candidate patterns worth capturing from the current work session.
39
40
 
40
41
  ### Steps
41
42
 
42
43
  1. **Review Recent Changes**
44
+
43
45
  ```bash
44
46
  # Check what was modified
45
47
  git diff HEAD~5 --name-only
46
-
48
+
47
49
  # Review specific fix patterns
48
50
  git log --oneline -10 --grep="fix"
49
51
  ```
@@ -58,6 +60,7 @@ Identify candidate patterns worth capturing from the current work session.
58
60
  - ✅ Framework-specific workarounds
59
61
 
60
62
  3. **Check Existing Patterns**
63
+
61
64
  ```bash
62
65
  # List current patterns to avoid duplicates
63
66
  workflow learn:list --framework <current-framework>
@@ -77,29 +80,30 @@ Identify candidate patterns worth capturing from the current work session.
77
80
  ## Phase 2: Categorization
78
81
 
79
82
  ### Objective
83
+
80
84
  Classify each pattern candidate into the appropriate type and category.
81
85
 
82
86
  ### Pattern Types
83
87
 
84
- | Type | Use When | Example |
85
- |------|----------|---------|
86
- | **Fix Pattern** | Solves a specific, repeatable error | ESLint rule violation fix |
87
- | **Blueprint** | Represents complete project/feature setup | Next.js 14 TypeScript starter |
88
+ | Type | Use When | Example |
89
+ | --------------- | ----------------------------------------- | ----------------------------- |
90
+ | **Fix Pattern** | Solves a specific, repeatable error | ESLint rule violation fix |
91
+ | **Blueprint** | Represents complete project/feature setup | Next.js 14 TypeScript starter |
88
92
 
89
93
  ### Fix Pattern Categories
90
94
 
91
95
  Choose the most specific category:
92
96
 
93
- | Category | Description | Examples |
94
- |----------|-------------|----------|
95
- | `lint` | Linting rule violations | ESLint, Prettier, Stylelint |
96
- | `type-error` | TypeScript/type system errors | Missing types, inference issues |
97
- | `dependency` | Package/module resolution | Missing deps, version conflicts |
98
- | `config` | Configuration file issues | tsconfig, next.config, vite.config |
99
- | `runtime` | Runtime errors | Null refs, async issues |
100
- | `build` | Build/compilation failures | Bundler errors, missing exports |
101
- | `test` | Test failures | Jest, Vitest, Playwright |
102
- | `security` | Security vulnerabilities | Dependency audits, secrets |
97
+ | Category | Description | Examples |
98
+ | ------------ | ----------------------------- | ---------------------------------- |
99
+ | `lint` | Linting rule violations | ESLint, Prettier, Stylelint |
100
+ | `type-error` | TypeScript/type system errors | Missing types, inference issues |
101
+ | `dependency` | Package/module resolution | Missing deps, version conflicts |
102
+ | `config` | Configuration file issues | tsconfig, next.config, vite.config |
103
+ | `runtime` | Runtime errors | Null refs, async issues |
104
+ | `build` | Build/compilation failures | Bundler errors, missing exports |
105
+ | `test` | Test failures | Jest, Vitest, Playwright |
106
+ | `security` | Security vulnerabilities | Dependency audits, secrets |
103
107
 
104
108
  ### Tag Schema
105
109
 
@@ -118,6 +122,7 @@ custom:<value> → custom:app-router, custom:server-component
118
122
  ## Phase 3: Pattern Extraction
119
123
 
120
124
  ### Objective
125
+
121
126
  Convert the identified fixes into structured pattern definitions.
122
127
 
123
128
  ### For Fix Patterns
@@ -130,14 +135,14 @@ Extract these components:
130
135
  name: string, // "ESLint prefer-const fix"
131
136
  description: string, // "Replace let with const for variables that are never reassigned"
132
137
  category: string, // "lint"
133
-
138
+
134
139
  // TRIGGER (when does this apply?)
135
140
  trigger: {
136
141
  errorPattern: string, // Regex: "Prefer const over let"
137
142
  errorMessage: string, // Example: "'x' is never reassigned"
138
143
  filePattern: string, // Glob: "*.ts,*.tsx"
139
144
  },
140
-
145
+
141
146
  // SOLUTION (how to fix it)
142
147
  solution: {
143
148
  type: string, // "file-change" | "command" | "config-update"
@@ -148,7 +153,7 @@ Extract these components:
148
153
  description: string, // Human-readable step
149
154
  }]
150
155
  },
151
-
156
+
152
157
  // COMPATIBILITY (where does this work?)
153
158
  compatibility: {
154
159
  framework: string, // "next" | "react" | "vue" | ...
@@ -156,7 +161,7 @@ Extract these components:
156
161
  runtime: string, // "node"
157
162
  runtimeVersion: string, // ">=18.0.0"
158
163
  },
159
-
164
+
160
165
  // METADATA
161
166
  tags: [{ name: string, category: string }],
162
167
  source: "manual" | "auto-heal" | "verify-fix" | "imported",
@@ -173,7 +178,7 @@ Extract these components:
173
178
  // IDENTIFICATION
174
179
  name: string, // "Next.js 14 TypeScript Starter"
175
180
  description: string, // "Complete setup with App Router, Tailwind, and testing"
176
-
181
+
177
182
  // STACK DEFINITION
178
183
  stack: {
179
184
  framework: string, // "next"
@@ -183,20 +188,20 @@ Extract these components:
183
188
  dependencies: [{ name: string, version: string }],
184
189
  devDependencies: [{ name: string, version: string }],
185
190
  },
186
-
191
+
187
192
  // PROJECT STRUCTURE
188
193
  structure: {
189
194
  directories: [{ path: string, purpose: string }],
190
195
  keyFiles: [{ path: string, purpose: string, template?: string }],
191
196
  },
192
-
197
+
193
198
  // SETUP STEPS
194
199
  setup: {
195
200
  prerequisites: string[],
196
201
  steps: [{ order: number, command: string, description: string }],
197
202
  configs: [{ file: string, content: string, description: string }],
198
203
  },
199
-
204
+
200
205
  // METADATA
201
206
  tags: [{ name: string, category: string }],
202
207
  relatedPatterns: string[], // UUIDs of related fix patterns
@@ -209,6 +214,7 @@ Extract these components:
209
214
  ## Phase 4: Validation
210
215
 
211
216
  ### Objective
217
+
212
218
  Ensure patterns are high-quality before storing.
213
219
 
214
220
  ### Quality Checklist
@@ -236,19 +242,20 @@ workflow learn:record --type fix --name "..." --dry-run
236
242
 
237
243
  Ensure these are NOT in the pattern:
238
244
 
239
- | Data Type | Example | Action |
240
- |-----------|---------|--------|
241
- | Absolute paths | `/home/user/project` | Remove or use `<PATH>` |
242
- | Email addresses | `dev@company.com` | Remove entirely |
243
- | API keys | `sk_live_...` | Never include |
244
- | IP addresses | `192.168.1.100` | Remove or use `<IP>` |
245
- | Repo-specific names | `my-company-app` | Generalize |
245
+ | Data Type | Example | Action |
246
+ | ------------------- | -------------------- | ---------------------- |
247
+ | Absolute paths | `/home/user/project` | Remove or use `<PATH>` |
248
+ | Email addresses | `dev@company.com` | Remove entirely |
249
+ | API keys | `sk_live_...` | Never include |
250
+ | IP addresses | `192.168.1.100` | Remove or use `<IP>` |
251
+ | Repo-specific names | `my-company-app` | Generalize |
246
252
 
247
253
  ---
248
254
 
249
255
  ## Phase 5: Store Update
250
256
 
251
257
  ### Objective
258
+
252
259
  Persist validated patterns to the central store.
253
260
 
254
261
  ### Recording Fix Patterns
@@ -280,7 +287,10 @@ workflow learn:record \
280
287
  When automating pattern capture:
281
288
 
282
289
  ```typescript
283
- import { PatternStore, type FixPattern } from "@hawkinside_out/workflow-improvement-tracker";
290
+ import {
291
+ PatternStore,
292
+ type FixPattern,
293
+ } from "@hawkinside_out/workflow-improvement-tracker";
284
294
 
285
295
  const store = new PatternStore(process.cwd());
286
296
  await store.initialize();
@@ -300,12 +310,14 @@ const pattern: FixPattern = {
300
310
  },
301
311
  solution: {
302
312
  type: "file-change",
303
- steps: [{
304
- order: 1,
305
- action: "modify",
306
- target: "<file>",
307
- description: "Change 'let' to 'const' for the flagged variable",
308
- }],
313
+ steps: [
314
+ {
315
+ order: 1,
316
+ action: "modify",
317
+ target: "<file>",
318
+ description: "Change 'let' to 'const' for the flagged variable",
319
+ },
320
+ ],
309
321
  },
310
322
  compatibility: {
311
323
  framework: "node",
@@ -350,6 +362,7 @@ await store.saveFixPattern(existing);
350
362
  ## Phase 6: Reporting
351
363
 
352
364
  ### Objective
365
+
353
366
  Communicate what patterns were captured and their status.
354
367
 
355
368
  ### Post-Analysis Report Template
@@ -360,18 +373,21 @@ After completing pattern analysis, report:
360
373
  ## 📚 Pattern Analysis Complete
361
374
 
362
375
  ### Patterns Recorded
363
- | Type | Name | Category | Status |
364
- |------|------|----------|--------|
365
- | Fix | ESLint prefer-const | lint | Saved |
366
- | Fix | TS null assertion | type-error | ✅ Saved |
367
- | Blueprint | Next.js 14 Starter | - | Skipped (duplicate) |
376
+
377
+ | Type | Name | Category | Status |
378
+ | --------- | ------------------- | ---------- | ---------------------- |
379
+ | Fix | ESLint prefer-const | lint | ✅ Saved |
380
+ | Fix | TS null assertion | type-error | Saved |
381
+ | Blueprint | Next.js 14 Starter | - | ⏭ Skipped (duplicate) |
368
382
 
369
383
  ### Store Statistics
384
+
370
385
  - Total Fix Patterns: 45
371
386
  - Total Blueprints: 7
372
387
  - This Session: +2 fixes
373
388
 
374
389
  ### Next Steps
390
+
375
391
  - Run `workflow learn:list` to view all patterns
376
392
  - Run `workflow learn:sync --push` to share with community
377
393
  ```
@@ -388,12 +404,12 @@ workflow learn:stats
388
404
 
389
405
  ### Good Pattern Characteristics
390
406
 
391
- | Criteria | Good Example | Bad Example |
392
- |----------|--------------|-------------|
393
- | **Specificity** | `errorPattern: "Cannot find module '@/.*'"` | `errorPattern: "error"` |
394
- | **Reusability** | Works across similar projects | Only works in one specific repo |
395
- | **Documentation** | Clear description with context | "Fixes the thing" |
396
- | **Versioning** | `frameworkVersion: "^14.0.0"` | No version specified |
407
+ | Criteria | Good Example | Bad Example |
408
+ | ----------------- | ------------------------------------------- | ------------------------------- |
409
+ | **Specificity** | `errorPattern: "Cannot find module '@/.*'"` | `errorPattern: "error"` |
410
+ | **Reusability** | Works across similar projects | Only works in one specific repo |
411
+ | **Documentation** | Clear description with context | "Fixes the thing" |
412
+ | **Versioning** | `frameworkVersion: "^14.0.0"` | No version specified |
397
413
 
398
414
  ### Pattern Red Flags
399
415
 
@@ -502,6 +518,7 @@ workflow verify --fix --learn
502
518
  ```
503
519
 
504
520
  This automatically:
521
+
505
522
  1. Runs all quality checks
506
523
  2. Applies auto-fixes
507
524
  3. Re-validates
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/index.ts","../src/config/schema.ts"],"sourcesContent":["import { cosmiconfig } from \"cosmiconfig\";\nimport { WorkflowConfig, WorkflowConfigSchema } from \"./schema.js\";\nimport { join } from \"path\";\nimport { existsSync } from \"fs\";\n\nconst explorer = cosmiconfig(\"workflow\", {\n searchPlaces: [\n \"workflow.config.ts\",\n \"workflow.config.js\",\n \"workflow.config.json\",\n \".workflowrc\",\n \".workflowrc.json\",\n \"package.json\",\n ],\n});\n\nexport async function loadConfig(\n cwd: string = process.cwd(),\n): Promise<WorkflowConfig | null> {\n try {\n const result = await explorer.search(cwd);\n\n if (!result || !result.config) {\n return null;\n }\n\n // Validate config against schema\n const validated = WorkflowConfigSchema.parse(result.config);\n return validated;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Failed to load workflow config: ${error.message}`);\n }\n throw error;\n }\n}\n\nexport function hasConfig(cwd: string = process.cwd()): boolean {\n const configPaths = [\n \"workflow.config.ts\",\n \"workflow.config.js\",\n \"workflow.config.json\",\n \".workflowrc\",\n \".workflowrc.json\",\n ];\n\n return configPaths.some((path) => existsSync(join(cwd, path)));\n}\n\nexport {\n WorkflowConfig,\n WorkflowConfigSchema,\n Scope,\n BranchType,\n ConventionalType,\n} from \"./schema.js\";\n","import { z } from \"zod\";\n\n// Reserved scope names that cannot be used\nconst RESERVED_SCOPE_NAMES = [\n \"init\",\n \"create\",\n \"build\",\n \"test\",\n \"config\",\n \"docs\",\n \"ci\",\n \"deps\",\n];\n\nexport const ScopeSchema = z.object({\n name: z\n .string()\n .min(1)\n .max(32, \"Scope name must be 32 characters or less\")\n .regex(\n /^[a-z0-9-]+$/,\n \"Scope name must be lowercase alphanumeric with hyphens\",\n )\n .refine((name) => !RESERVED_SCOPE_NAMES.includes(name), {\n message: `Scope name cannot be a reserved word: ${RESERVED_SCOPE_NAMES.join(\", \")}`,\n }),\n description: z\n .string()\n .min(10, \"Scope description must be at least 10 characters\"),\n emoji: z.string().optional(),\n category: z\n .enum([\n \"auth\",\n \"features\",\n \"infrastructure\",\n \"documentation\",\n \"testing\",\n \"performance\",\n \"other\",\n ])\n .optional(),\n});\n\nexport const BranchTypeSchema = z.enum([\n \"feature\",\n \"bugfix\",\n \"hotfix\",\n \"chore\",\n \"refactor\",\n \"docs\",\n \"test\",\n \"release\",\n]);\n\nexport const ConventionalTypeSchema = z.enum([\n \"feat\",\n \"fix\",\n \"refactor\",\n \"chore\",\n \"docs\",\n \"test\",\n \"perf\",\n \"style\",\n \"ci\",\n \"build\",\n \"revert\",\n]);\n\nexport const EnforcementLevelSchema = z.enum([\n \"strict\",\n \"advisory\",\n \"learning\",\n]);\n\nexport const AnalyticsConfigSchema = z.object({\n enabled: z.boolean().default(false),\n shareAnonymous: z.boolean().default(false),\n});\n\nexport const CIConfigSchema = z.object({\n provider: z.enum([\"github\", \"gitlab\", \"azure\"]).default(\"github\"),\n nodeVersions: z.array(z.string()).optional(),\n defaultBranch: z.string().default(\"main\"),\n checks: z\n .array(z.enum([\"lint\", \"typecheck\", \"format\", \"build\", \"test\"]))\n .optional(),\n});\n\nexport const HooksConfigSchema = z.object({\n preCommit: z.array(z.string()).optional(),\n commitMsg: z.array(z.string()).optional(),\n prePush: z.array(z.string()).optional(),\n});\n\nexport const GuidelinesConfigSchema = z.object({\n mandatoryTemplates: z.array(z.string()).optional(),\n optionalTemplates: z.array(z.string()).optional(),\n customTemplatesDir: z.string().optional(),\n additionalMandatory: z.array(z.string()).optional(),\n optionalOverrides: z.array(z.string()).optional(),\n});\n\nexport const WorkflowConfigSchema = z.object({\n projectName: z.string().min(1),\n scopes: z.array(ScopeSchema).min(1),\n branchTypes: z.array(BranchTypeSchema).optional(),\n conventionalTypes: z.array(ConventionalTypeSchema).optional(),\n enforcement: EnforcementLevelSchema.default(\"strict\"),\n language: z.string().default(\"en\"),\n analytics: AnalyticsConfigSchema.optional(),\n adapter: z.string().optional(),\n syncRemote: z.string().optional(),\n ci: CIConfigSchema.optional(),\n hooks: HooksConfigSchema.optional(),\n guidelines: GuidelinesConfigSchema.optional(),\n});\n\nexport type Scope = z.infer<typeof ScopeSchema>;\nexport type BranchType = z.infer<typeof BranchTypeSchema>;\nexport type ConventionalType = z.infer<typeof ConventionalTypeSchema>;\nexport type EnforcementLevel = z.infer<typeof EnforcementLevelSchema>;\nexport type AnalyticsConfig = z.infer<typeof AnalyticsConfigSchema>;\nexport type CIConfig = z.infer<typeof CIConfigSchema>;\nexport type HooksConfig = z.infer<typeof HooksConfigSchema>;\nexport type GuidelinesConfig = z.infer<typeof GuidelinesConfigSchema>;\nexport type WorkflowConfig = z.infer<typeof WorkflowConfigSchema>;\n\nexport const defaultBranchTypes: BranchType[] = [\n \"feature\",\n \"bugfix\",\n \"hotfix\",\n \"chore\",\n \"refactor\",\n \"docs\",\n \"test\",\n];\n\nexport const defaultConventionalTypes: ConventionalType[] = [\n \"feat\",\n \"fix\",\n \"refactor\",\n \"chore\",\n \"docs\",\n \"test\",\n \"perf\",\n \"style\",\n];\n\n/**\n * Validates scope definitions for duplicates, description quality, and category values\n * @param scopes Array of scope definitions to validate\n * @returns Object with validation result and error messages\n */\nexport function validateScopeDefinitions(scopes: Scope[]): {\n valid: boolean;\n errors: string[];\n} {\n const errors: string[] = [];\n const seenNames = new Set<string>();\n\n for (const scope of scopes) {\n // Check for duplicate names\n if (seenNames.has(scope.name)) {\n errors.push(`Duplicate scope name: \"${scope.name}\"`);\n }\n seenNames.add(scope.name);\n\n // Validate using schema (this will catch min length, reserved names, etc.)\n const result = ScopeSchema.safeParse(scope);\n if (!result.success) {\n result.error.errors.forEach((err) => {\n errors.push(`Scope \"${scope.name}\": ${err.message}`);\n });\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n"],"mappings":"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","names":[]}