devflow-kit 1.2.0 → 1.3.1

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 (68) hide show
  1. package/CHANGELOG.md +39 -2
  2. package/dist/cli.js +2 -0
  3. package/dist/commands/ambient.js +5 -4
  4. package/dist/commands/init.js +4 -2
  5. package/dist/commands/memory.js +4 -4
  6. package/dist/commands/skills.d.ts +11 -0
  7. package/dist/commands/skills.js +116 -0
  8. package/dist/commands/uninstall.js +11 -1
  9. package/dist/utils/installer.js +20 -2
  10. package/package.json +3 -2
  11. package/plugins/devflow-accessibility/.claude-plugin/plugin.json +10 -3
  12. package/plugins/devflow-ambient/.claude-plugin/plugin.json +4 -2
  13. package/plugins/devflow-ambient/README.md +8 -8
  14. package/plugins/devflow-ambient/commands/ambient.md +14 -14
  15. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +15 -8
  16. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +2 -2
  17. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +1 -1
  18. package/plugins/devflow-code-review/.claude-plugin/plugin.json +13 -3
  19. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +1 -1
  20. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +1 -1
  21. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +1 -1
  22. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +1 -1
  23. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +1 -1
  24. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +1 -1
  25. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +1 -1
  26. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +1 -1
  27. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +1 -1
  28. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +1 -1
  29. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +9 -2
  30. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +5 -8
  31. package/plugins/devflow-debug/.claude-plugin/plugin.json +10 -3
  32. package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +10 -3
  33. package/plugins/devflow-go/.claude-plugin/plugin.json +10 -3
  34. package/plugins/devflow-implement/.claude-plugin/plugin.json +19 -3
  35. package/plugins/devflow-implement/skills/self-review/SKILL.md +1 -1
  36. package/plugins/devflow-java/.claude-plugin/plugin.json +10 -3
  37. package/plugins/devflow-python/.claude-plugin/plugin.json +10 -3
  38. package/plugins/devflow-react/.claude-plugin/plugin.json +10 -3
  39. package/plugins/devflow-resolve/.claude-plugin/plugin.json +13 -3
  40. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +1 -1
  41. package/plugins/devflow-rust/.claude-plugin/plugin.json +10 -3
  42. package/plugins/devflow-self-review/.claude-plugin/plugin.json +10 -3
  43. package/plugins/devflow-self-review/skills/self-review/SKILL.md +1 -1
  44. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -4
  45. package/plugins/devflow-typescript/.claude-plugin/plugin.json +10 -3
  46. package/scripts/hooks/{ambient-prompt.sh → ambient-prompt} +4 -4
  47. package/scripts/hooks/{background-memory-update.sh → background-memory-update} +29 -9
  48. package/scripts/hooks/{ensure-memory-gitignore.sh → ensure-memory-gitignore} +1 -1
  49. package/scripts/hooks/{pre-compact-memory.sh → pre-compact-memory} +2 -2
  50. package/scripts/hooks/run-hook +23 -0
  51. package/scripts/hooks/session-start-memory +151 -0
  52. package/scripts/hooks/{stop-update-memory.sh → stop-update-memory} +4 -4
  53. package/shared/skills/ambient-router/SKILL.md +15 -8
  54. package/shared/skills/ambient-router/references/skill-catalog.md +2 -2
  55. package/shared/skills/architecture-patterns/SKILL.md +1 -1
  56. package/shared/skills/complexity-patterns/SKILL.md +1 -1
  57. package/shared/skills/consistency-patterns/SKILL.md +1 -1
  58. package/shared/skills/database-patterns/SKILL.md +1 -1
  59. package/shared/skills/dependencies-patterns/SKILL.md +1 -1
  60. package/shared/skills/documentation-patterns/SKILL.md +1 -1
  61. package/shared/skills/performance-patterns/SKILL.md +1 -1
  62. package/shared/skills/regression-patterns/SKILL.md +1 -1
  63. package/shared/skills/review-methodology/SKILL.md +1 -1
  64. package/shared/skills/security-patterns/SKILL.md +1 -1
  65. package/shared/skills/self-review/SKILL.md +1 -1
  66. package/shared/skills/test-driven-development/SKILL.md +5 -8
  67. package/src/templates/settings.json +3 -3
  68. package/scripts/hooks/session-start-memory.sh +0 -126
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: complexity-patterns
3
- description: Complexity analysis patterns for code review. Detects high cyclomatic complexity, deep nesting, long functions, and readability issues that hinder maintainability. Loaded by Reviewer agent when focus=complexity.
3
+ description: This skill should be used when reviewing code for high cyclomatic complexity, deep nesting, or long functions.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: consistency-patterns
3
- description: Consistency analysis patterns for code review. Detects naming convention violations, pattern deviations, unnecessary simplification, and feature truncation in diffs. Loaded by Reviewer agent when focus=consistency.
3
+ description: This skill should be used when reviewing code for naming convention violations, pattern deviations, or inconsistent API styles.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: database-patterns
3
- description: Database analysis patterns for code review. Detects missing indexes, slow queries, unsafe migrations, schema design issues, and connection pool misuse. Loaded by Reviewer agent when focus=database.
3
+ description: This skill should be used when reviewing database queries, migrations, indexes, or schema changes.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: dependencies-patterns
3
- description: Dependency analysis patterns for code review. Detects known CVEs, outdated packages, license incompatibilities, and unnecessary transitive dependencies. Loaded by Reviewer agent when focus=dependencies.
3
+ description: This skill should be used when reviewing dependency changes, lock files, or package additions.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: documentation-patterns
3
- description: Documentation analysis patterns for code review. Detects doc drift from code changes, missing documentation for public APIs, stale comments, and misleading README sections. Loaded by Reviewer agent when focus=documentation.
3
+ description: This skill should be used when reviewing for documentation drift, missing API docs, or stale comments.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: performance-patterns
3
- description: Performance analysis patterns for code review. Detects N+1 queries, memory leaks, unbounded allocations, I/O bottlenecks, and missing caching opportunities. Loaded by Reviewer agent when focus=performance.
3
+ description: This skill should be used when reviewing code for N+1 queries, memory leaks, or I/O bottlenecks.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: regression-patterns
3
- description: Regression analysis patterns for code review. Detects lost functionality, removed exports, changed signatures, and behavioral changes that break existing consumers. Loaded by Reviewer agent when focus=regression.
3
+ description: This skill should be used when reviewing changes that may remove exports, change signatures, or alter behavior.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review-methodology
3
- description: Standard review methodology providing the 6-step process and 3-category issue classification (must-fix, should-fix, nit) used by all DevFlow review agents. Ensures consistent, fair, and actionable code reviews across all focus areas. Loaded by the unified Reviewer agent.
3
+ description: This skill should be used when performing a code review to apply the standard 6-step review process.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob, Bash
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: security-patterns
3
- description: Security vulnerability analysis patterns for code review. Detects injection flaws, authentication bypasses, insecure cryptography, hardcoded secrets, and missing input sanitization. Loaded by Reviewer agent when focus=security.
3
+ description: This skill should be used when reviewing code for injection flaws, auth bypasses, or hardcoded secrets.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["skills", "quality", "patterns", "auto-activate", "enforcement", "foundation"],
12
+ "keywords": [
13
+ "skills",
14
+ "quality",
15
+ "patterns",
16
+ "auto-activate",
17
+ "enforcement",
18
+ "foundation"
19
+ ],
13
20
  "agents": [],
14
21
  "skills": [
15
22
  "core-patterns",
@@ -1,9 +1,6 @@
1
1
  ---
2
2
  name: test-driven-development
3
- description: >-
4
- Enforce RED-GREEN-REFACTOR cycle during implementation. Write failing tests before
5
- production code. Distinct from test-patterns (which reviews test quality) — this
6
- skill enforces the TDD workflow during code generation.
3
+ description: This skill should be used when implementing new features, fixing bugs, or writing new code. Enforces RED-GREEN-REFACTOR.
7
4
  user-invocable: false
8
5
  allowed-tools: Read, Grep, Glob
9
6
  activation:
@@ -94,7 +91,7 @@ See `references/rationalization-prevention.md` for extended examples with code.
94
91
 
95
92
  ## Process Enforcement
96
93
 
97
- When implementing any feature under ambient BUILD/STANDARD:
94
+ When implementing any feature under ambient BUILD/GUIDED:
98
95
 
99
96
  1. **Identify the first behavior** — What is the simplest thing this feature must do?
100
97
  2. **Write the test** — Describe that behavior as a failing test
@@ -133,7 +130,7 @@ When skipping TDD, never rationalize. State clearly: "Skipping TDD because: [spe
133
130
 
134
131
  ## Integration with Ambient Mode
135
132
 
136
- - **BUILD/STANDARD** → TDD enforced. Every new function/method gets test-first treatment.
133
+ - **BUILD/GUIDED** → TDD enforced. Every new function/method gets test-first treatment.
137
134
  - **BUILD/QUICK** → TDD skipped (trivial single-file edit).
138
- - **BUILD/ESCALATE** → TDD mentioned in nudge toward `/implement`.
139
- - **DEBUG/STANDARD** → TDD applies to the fix: write a test that reproduces the bug first, then fix.
135
+ - **BUILD/ELEVATE** → TDD mentioned in nudge toward `/implement`.
136
+ - **DEBUG/GUIDED** → TDD applies to the fix: write a test that reproduces the bug first, then fix.
@@ -5,12 +5,19 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["debugging", "hypotheses", "investigation", "agent-teams"],
13
- "agents": ["git"],
12
+ "keywords": [
13
+ "debugging",
14
+ "hypotheses",
15
+ "investigation",
16
+ "agent-teams"
17
+ ],
18
+ "agents": [
19
+ "git"
20
+ ],
14
21
  "skills": [
15
22
  "agent-teams",
16
23
  "git-safety"
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["design", "typography", "color", "css"],
12
+ "keywords": [
13
+ "design",
14
+ "typography",
15
+ "color",
16
+ "css"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["frontend-design"]
19
+ "skills": [
20
+ "frontend-design"
21
+ ]
15
22
  }
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["go", "golang", "concurrency", "errors"],
12
+ "keywords": [
13
+ "go",
14
+ "golang",
15
+ "concurrency",
16
+ "errors"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["go"]
19
+ "skills": [
20
+ "go"
21
+ ]
15
22
  }
@@ -5,12 +5,28 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["implementation", "coding", "workflow", "agents", "agentic", "pr"],
13
- "agents": ["git", "skimmer", "synthesizer", "coder", "simplifier", "scrutinizer", "shepherd", "validator"],
12
+ "keywords": [
13
+ "implementation",
14
+ "coding",
15
+ "workflow",
16
+ "agents",
17
+ "agentic",
18
+ "pr"
19
+ ],
20
+ "agents": [
21
+ "git",
22
+ "skimmer",
23
+ "synthesizer",
24
+ "coder",
25
+ "simplifier",
26
+ "scrutinizer",
27
+ "shepherd",
28
+ "validator"
29
+ ],
14
30
  "skills": [
15
31
  "agent-teams",
16
32
  "implementation-patterns",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-review
3
- description: Self-review framework evaluating implementation quality against 9 pillars (correctness, completeness, security, performance, maintainability, testing, documentation, error handling, simplicity). Fixes P0/P1 issues immediately rather than reporting them. Used by the Scrutinizer agent as a quality gate.
3
+ description: This skill should be used when evaluating implementation quality before submission, checking correctness, security, and simplicity.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob, Edit, Write, Bash
6
6
  ---
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["java", "records", "sealed-classes", "composition"],
12
+ "keywords": [
13
+ "java",
14
+ "records",
15
+ "sealed-classes",
16
+ "composition"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["java"]
19
+ "skills": [
20
+ "java"
21
+ ]
15
22
  }
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["python", "type-hints", "dataclasses", "async"],
12
+ "keywords": [
13
+ "python",
14
+ "type-hints",
15
+ "dataclasses",
16
+ "async"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["python"]
19
+ "skills": [
20
+ "python"
21
+ ]
15
22
  }
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["react", "hooks", "state", "components"],
12
+ "keywords": [
13
+ "react",
14
+ "hooks",
15
+ "state",
16
+ "components"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["react"]
19
+ "skills": [
20
+ "react"
21
+ ]
15
22
  }
@@ -5,12 +5,22 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["issues", "fixes", "tech-debt", "resolution", "review"],
13
- "agents": ["git", "resolver", "simplifier"],
12
+ "keywords": [
13
+ "issues",
14
+ "fixes",
15
+ "tech-debt",
16
+ "resolution",
17
+ "review"
18
+ ],
19
+ "agents": [
20
+ "git",
21
+ "resolver",
22
+ "simplifier"
23
+ ],
14
24
  "skills": [
15
25
  "implementation-patterns",
16
26
  "security-patterns",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: security-patterns
3
- description: Security vulnerability analysis patterns for code review. Detects injection flaws, authentication bypasses, insecure cryptography, hardcoded secrets, and missing input sanitization. Loaded by Reviewer agent when focus=security.
3
+ description: This skill should be used when reviewing code for injection flaws, auth bypasses, or hardcoded secrets.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob
6
6
  ---
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["rust", "ownership", "borrowing", "type-safety"],
12
+ "keywords": [
13
+ "rust",
14
+ "ownership",
15
+ "borrowing",
16
+ "type-safety"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["rust"]
19
+ "skills": [
20
+ "rust"
21
+ ]
15
22
  }
@@ -1,7 +1,14 @@
1
1
  {
2
2
  "name": "devflow-self-review",
3
3
  "description": "Self-review workflow: Simplifier + Scrutinizer for code quality",
4
- "version": "1.2.0",
5
- "agents": ["simplifier", "scrutinizer", "validator"],
6
- "skills": ["self-review", "core-patterns"]
4
+ "version": "1.3.1",
5
+ "agents": [
6
+ "simplifier",
7
+ "scrutinizer",
8
+ "validator"
9
+ ],
10
+ "skills": [
11
+ "self-review",
12
+ "core-patterns"
13
+ ]
7
14
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-review
3
- description: Self-review framework evaluating implementation quality against 9 pillars (correctness, completeness, security, performance, maintainability, testing, documentation, error handling, simplicity). Fixes P0/P1 issues immediately rather than reporting them. Used by the Scrutinizer agent as a quality gate.
3
+ description: This skill should be used when evaluating implementation quality before submission, checking correctness, security, and simplicity.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Grep, Glob, Edit, Write, Bash
6
6
  ---
@@ -5,11 +5,22 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["specification", "requirements", "planning", "issues", "github"],
13
- "agents": ["skimmer", "synthesizer"],
14
- "skills": ["agent-teams"]
12
+ "keywords": [
13
+ "specification",
14
+ "requirements",
15
+ "planning",
16
+ "issues",
17
+ "github"
18
+ ],
19
+ "agents": [
20
+ "skimmer",
21
+ "synthesizer"
22
+ ],
23
+ "skills": [
24
+ "agent-teams"
25
+ ]
15
26
  }
@@ -5,11 +5,18 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.2.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
12
- "keywords": ["typescript", "types", "generics", "type-safety"],
12
+ "keywords": [
13
+ "typescript",
14
+ "types",
15
+ "generics",
16
+ "type-safety"
17
+ ],
13
18
  "agents": [],
14
- "skills": ["typescript"]
19
+ "skills": [
20
+ "typescript"
21
+ ]
15
22
  }
@@ -5,7 +5,7 @@
5
5
  # relevant skill loading via the ambient-router skill.
6
6
  # Zero file I/O beyond stdin — static injection only.
7
7
 
8
- set -euo pipefail
8
+ set -e
9
9
 
10
10
  # jq is required to parse hook input JSON — silently no-op if missing
11
11
  if ! command -v jq &>/dev/null; then exit 0; fi
@@ -33,12 +33,12 @@ fi
33
33
  # Inject classification preamble
34
34
  PREAMBLE="AMBIENT MODE ACTIVE: Before responding, silently classify this prompt:
35
35
  Intent: BUILD | DEBUG | REVIEW | PLAN | EXPLORE | CHAT
36
- Depth: QUICK (no overhead) | STANDARD (load skills) | ESCALATE (suggest /command)
36
+ Depth: QUICK (no overhead) | GUIDED (load skills) | ELEVATE (suggest /command)
37
37
 
38
- If STANDARD+: Read the ambient-router skill for classification details and skill selection matrix. For BUILD tasks, also load test-driven-development skill and enforce RED-GREEN-REFACTOR.
38
+ If GUIDED+: Use the ambient-router skill already in your session context for classification details and skill selection matrix. Then Read the selected skills from ~/.claude/skills/<name>/SKILL.md and apply their patterns. For BUILD tasks, also load test-driven-development skill and enforce RED-GREEN-REFACTOR.
39
39
 
40
40
  If QUICK: Respond normally without stating classification.
41
- Only state classification aloud for STANDARD/ESCALATE."
41
+ Only state classification aloud for GUIDED/ELEVATE."
42
42
 
43
43
  jq -n --arg ctx "$PREAMBLE" '{
44
44
  "hookSpecificOutput": {
@@ -1,11 +1,11 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # Background Working Memory Updater
4
- # Called by stop-update-memory.sh as a detached background process.
4
+ # Called by stop-update-memory as a detached background process.
5
5
  # Resumes the parent session headlessly to update .memory/WORKING-MEMORY.md.
6
6
  # On failure: logs error, does nothing (no fallback).
7
7
 
8
- set -euo pipefail
8
+ set -e
9
9
 
10
10
  CWD="$1"
11
11
  SESSION_ID="$2"
@@ -29,7 +29,7 @@ rotate_log() {
29
29
 
30
30
  # --- Stale Lock Recovery ---
31
31
 
32
- # Portable mtime in epoch seconds (same pattern as stop-update-memory.sh:35-39)
32
+ # Portable mtime in epoch seconds (same pattern as stop-update-memory:35-39)
33
33
  get_mtime() {
34
34
  if stat --version &>/dev/null 2>&1; then
35
35
  stat -c %Y "$1"
@@ -96,8 +96,10 @@ rotate_log
96
96
 
97
97
  # Read existing memory for merge context
98
98
  EXISTING_MEMORY=""
99
+ PRE_UPDATE_MTIME=0
99
100
  if [ -f "$MEMORY_FILE" ]; then
100
101
  EXISTING_MEMORY=$(cat "$MEMORY_FILE")
102
+ PRE_UPDATE_MTIME=$(get_mtime "$MEMORY_FILE")
101
103
  fi
102
104
 
103
105
  # Build instruction
@@ -119,7 +121,7 @@ else
119
121
  If recurring patterns were observed during this session (coding conventions, architectural decisions, team preferences, tooling quirks), create $PATTERNS_FILE with entries formatted as: - **Pattern name**: Brief description (discovered: YYYY-MM-DD). Only create this file if genuine patterns were observed — do not fabricate entries."
120
122
  fi
121
123
 
122
- INSTRUCTION="Update the file $MEMORY_FILE with working memory from this session. The file already has content — possibly from a concurrent session that just wrote it moments ago. Merge this session's context with the existing content to produce a single unified working memory snapshot. Both this session and the existing content represent fresh, concurrent work — integrate both fully. Working memory captures what's active now, not a changelog. Deduplicate overlapping information. Keep under 120 lines total. Use the same structure: ## Now, ## Progress, ## Decisions, ## Modified Files, ## Context, ## Session Log.
124
+ INSTRUCTION="First, Read the file $MEMORY_FILE to satisfy Claude Code's read-before-write requirement. Then update it with working memory from this session. The file already has content — possibly from a concurrent session that just wrote it moments ago. Merge this session's context with the existing content to produce a single unified working memory snapshot. Both this session and the existing content represent fresh, concurrent work — integrate both fully. Working memory captures what's active now, not a changelog. Deduplicate overlapping information. Keep under 120 lines total. Use the same structure: ## Now, ## Progress, ## Decisions, ## Modified Files, ## Context, ## Session Log.
123
125
 
124
126
  ## Progress tracks Done (completed items), Remaining (next steps), and Blockers (if any). Keep each sub-list to 1-3 items. This section reflects current work state, not historical logs.
125
127
 
@@ -144,7 +146,7 @@ $EXISTING_PATTERNS"
144
146
  If recurring patterns were observed during this session (coding conventions, architectural decisions, team preferences, tooling quirks), create $PATTERNS_FILE with entries formatted as: - **Pattern name**: Brief description (discovered: YYYY-MM-DD). Only create this file if genuine patterns were observed — do not fabricate entries."
145
147
  fi
146
148
 
147
- INSTRUCTION="Create the file $MEMORY_FILE with working memory from this session. Keep under 120 lines. Use this structure:
149
+ INSTRUCTION="First, Read the file $MEMORY_FILE if it exists (to satisfy Claude Code's read-before-write requirement). Then create it with working memory from this session. Keep under 120 lines. Use this structure:
148
150
 
149
151
  # Working Memory
150
152
 
@@ -178,12 +180,20 @@ TIMEOUT=120 # Normal runtime 30-60s; 2x margin
178
180
  DEVFLOW_BG_UPDATER=1 env -u CLAUDECODE "$CLAUDE_BIN" -p \
179
181
  --resume "$SESSION_ID" \
180
182
  --model haiku \
181
- --tools "Write" \
182
- --allowedTools "Write($CWD/.memory/WORKING-MEMORY.md)" "Write($CWD/.memory/PROJECT-PATTERNS.md)" \
183
+ --tools "Read,Write,Bash" \
184
+ --allowedTools \
185
+ "Read($CWD/.memory/WORKING-MEMORY.md)" \
186
+ "Read($CWD/.memory/PROJECT-PATTERNS.md)" \
187
+ "Write($CWD/.memory/WORKING-MEMORY.md)" \
188
+ "Write($CWD/.memory/PROJECT-PATTERNS.md)" \
189
+ "Bash(git status:*)" \
190
+ "Bash(git log:*)" \
191
+ "Bash(git diff:*)" \
192
+ "Bash(git branch:*)" \
183
193
  --no-session-persistence \
184
194
  --output-format text \
185
195
  "$INSTRUCTION" \
186
- > /dev/null 2>> "$LOG_FILE" &
196
+ >> "$LOG_FILE" 2>&1 &
187
197
  CLAUDE_PID=$!
188
198
 
189
199
  # Watchdog: kill claude if it exceeds timeout
@@ -191,7 +201,17 @@ CLAUDE_PID=$!
191
201
  WATCHDOG_PID=$!
192
202
 
193
203
  if wait "$CLAUDE_PID" 2>/dev/null; then
194
- log "Update completed for session $SESSION_ID"
204
+ # Validate the file was actually modified (detect silent Write failures)
205
+ if [ -f "$MEMORY_FILE" ]; then
206
+ NEW_MTIME=$(get_mtime "$MEMORY_FILE")
207
+ if [ "$NEW_MTIME" -gt "$PRE_UPDATE_MTIME" ]; then
208
+ log "Update completed for session $SESSION_ID"
209
+ else
210
+ log "Update finished but file was not modified for session $SESSION_ID (possible Write tool failure)"
211
+ fi
212
+ else
213
+ log "Update finished but file does not exist for session $SESSION_ID"
214
+ fi
195
215
  else
196
216
  EXIT_CODE=$?
197
217
  if [ "$EXIT_CODE" -gt 128 ]; then
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
  # Ensures .memory/ exists and .gitignore entries are configured.
3
3
  # Called from stop and pre-compact hooks. Idempotent, ~1μs after first run.
4
- # Usage: source ensure-memory-gitignore.sh "$CWD"
4
+ # Usage: source ensure-memory-gitignore "$CWD"
5
5
 
6
6
  _MEMORY_DIR="$1/.memory"
7
7
 
@@ -6,7 +6,7 @@
6
6
  # has something to inject after compaction.
7
7
  # PreCompact hooks cannot block compaction — this is informational only.
8
8
 
9
- set -euo pipefail
9
+ set -e
10
10
 
11
11
  # jq is required to parse hook input JSON — silently no-op if missing
12
12
  if ! command -v jq &>/dev/null; then exit 0; fi
@@ -19,7 +19,7 @@ if [ -z "$CWD" ]; then
19
19
  fi
20
20
 
21
21
  # Auto-create .memory/ and ensure .gitignore entries (idempotent after first run)
22
- source "$(cd "$(dirname "$0")" && pwd)/ensure-memory-gitignore.sh" "$CWD" || exit 0
22
+ source "$(cd "$(dirname "$0")" && pwd)/ensure-memory-gitignore" "$CWD" || exit 0
23
23
 
24
24
  BACKUP_FILE="$CWD/.memory/backup.json"
25
25
 
@@ -0,0 +1,23 @@
1
+ : << 'CMDBLOCK'
2
+ @echo off
3
+ setlocal enabledelayedexpansion
4
+ set "SCRIPT_DIR=%~dp0"
5
+ set "HOOK_NAME=%~1"
6
+ shift
7
+ REM Try standard Git for Windows locations, then PATH
8
+ set "BASH_EXE="
9
+ if exist "C:\Program Files\Git\bin\bash.exe" set "BASH_EXE=C:\Program Files\Git\bin\bash.exe"
10
+ if not defined BASH_EXE if exist "C:\Program Files (x86)\Git\bin\bash.exe" set "BASH_EXE=C:\Program Files (x86)\Git\bin\bash.exe"
11
+ if not defined BASH_EXE (
12
+ where bash >nul 2>&1 && set "BASH_EXE=bash"
13
+ )
14
+ if defined BASH_EXE (
15
+ "%BASH_EXE%" "%SCRIPT_DIR%%HOOK_NAME%" %* & exit /b !errorlevel!
16
+ )
17
+ echo Warning: bash not found, DevFlow hooks require bash >&2
18
+ exit /b 0
19
+ CMDBLOCK
20
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
21
+ HOOK_NAME="$1"
22
+ shift
23
+ exec bash "$SCRIPT_DIR/${HOOK_NAME}" "$@"