devflow-kit 3.4.0 → 3.5.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.
- package/CHANGELOG.md +29 -0
- package/README.md +8 -4
- package/dist/agents/code-edit.md +133 -0
- package/dist/agents/code-fix.md +165 -0
- package/dist/agents/code.md +39 -182
- package/dist/agents/design.md +0 -1
- package/dist/agents/git.md +31 -693
- package/dist/agents/knowledge.md +8 -2
- package/dist/agents/research.md +6 -0
- package/dist/agents/review.md +0 -4
- package/dist/agents/scrutinize.md +3 -0
- package/dist/agents/skim.md +4 -0
- package/dist/agents/triage.md +8 -1
- package/dist/cli/commands/behavior-prompts.js +77 -0
- package/dist/cli/commands/behavior.js +123 -0
- package/dist/cli/commands/flags.js +8 -2
- package/dist/cli/commands/init-seed.js +7 -3
- package/dist/cli/commands/init.js +72 -5
- package/dist/cli/commands/rules.js +16 -0
- package/dist/cli/commands/tracker.js +112 -15
- package/dist/cli.js +2 -0
- package/dist/commands/bug-analysis.md +5 -5
- package/dist/commands/code-review.md +14 -9
- package/dist/commands/debug.md +25 -4
- package/dist/commands/dynamic-build.md +28 -38
- package/dist/commands/dynamic-plan.md +11 -9
- package/dist/commands/dynamic-profile.md +3 -3
- package/dist/commands/dynamic-tickets.md +12 -10
- package/dist/commands/explore.md +3 -3
- package/dist/commands/implement.md +91 -125
- package/dist/commands/plan.md +15 -8
- package/dist/commands/release.md +3 -2
- package/dist/commands/research.md +16 -9
- package/dist/commands/resolve.md +20 -15
- package/dist/commands/self-review.md +2 -2
- package/dist/core/agent-frontmatter.js +101 -0
- package/dist/core/compliance-compose.js +6 -4
- package/dist/core/feature-switch.js +23 -2
- package/dist/core/flags.js +111 -0
- package/dist/core/manifest.js +11 -3
- package/dist/core/mds-variants.js +68 -26
- package/dist/core/plugins.js +42 -65
- package/dist/core/project-paths.js +0 -4
- package/dist/core/proxy-log.js +1 -1
- package/dist/core/proxy-state.js +1 -1
- package/dist/core/tracker.js +120 -2
- package/dist/learning-off/agents/code-edit.md +129 -0
- package/dist/learning-off/agents/code-fix.md +161 -0
- package/dist/learning-off/agents/code.md +37 -180
- package/dist/learning-off/agents/design.md +0 -1
- package/dist/learning-off/agents/knowledge.md +8 -2
- package/dist/learning-off/agents/research.md +6 -0
- package/dist/learning-off/agents/review.md +0 -4
- package/dist/learning-off/agents/scrutinize.md +3 -0
- package/dist/learning-off/agents/skim.md +4 -0
- package/dist/learning-off/agents/triage.md +8 -1
- package/dist/learning-off/commands/bug-analysis.md +3 -3
- package/dist/learning-off/commands/code-review.md +12 -7
- package/dist/learning-off/commands/debug.md +22 -2
- package/dist/learning-off/commands/dynamic-build.md +27 -37
- package/dist/learning-off/commands/dynamic-plan.md +10 -8
- package/dist/learning-off/commands/dynamic-profile.md +2 -2
- package/dist/learning-off/commands/dynamic-tickets.md +11 -9
- package/dist/learning-off/commands/explore.md +1 -1
- package/dist/learning-off/commands/implement.md +89 -123
- package/dist/learning-off/commands/plan.md +13 -6
- package/dist/learning-off/commands/release.md +3 -2
- package/dist/learning-off/commands/research.md +14 -7
- package/dist/learning-off/commands/resolve.md +18 -13
- package/dist/skills/git/references/learn-conventions.md +27 -3
- package/dist/skills/git/references/pr/check-ci-status.md +19 -0
- package/dist/skills/git/references/pr/check-merge-readiness.md +19 -0
- package/dist/skills/git/references/pr/fetch-review-threads.md +30 -0
- package/dist/skills/git/references/pr/post-resolution-summary.md +18 -0
- package/dist/skills/git/references/pr/post-review-summary.md +20 -0
- package/dist/skills/git/references/pr/resolve-review-threads.md +28 -4
- package/dist/skills/git/references/pr/update-pr-evidence.md +13 -0
- package/dist/skills/git/references/pr/validate-branch.md +26 -0
- package/dist/skills/git/references/tracker/github/associate-release.md +24 -0
- package/dist/skills/git/references/tracker/github/backlink-shipped-issues.md +31 -1
- package/dist/skills/git/references/tracker/github/create-release.md +30 -1
- package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +89 -2
- package/dist/skills/git/references/tracker/github/ensure-traceable-issue.md +16 -1
- package/dist/skills/git/references/tracker/github/fetch-issue.md +36 -1
- package/dist/skills/git/references/tracker/github/fetch-issues-batch.md +47 -1
- package/dist/skills/git/references/tracker/github/gather-release-evidence.md +25 -0
- package/dist/skills/git/references/tracker/github/manage-debt.md +21 -1
- package/dist/skills/git/references/tracker/github/post-wave-report.md +15 -1
- package/dist/skills/git/references/tracker/github/setup-task.md +41 -1
- package/dist/skills/git/references/tracker/jira/associate-release.md +24 -0
- package/dist/skills/git/references/tracker/jira/backlink-shipped-issues.md +31 -1
- package/dist/skills/git/references/tracker/jira/create-release.md +30 -1
- package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +89 -2
- package/dist/skills/git/references/tracker/jira/ensure-traceable-issue.md +16 -1
- package/dist/skills/git/references/tracker/jira/fetch-issue.md +36 -1
- package/dist/skills/git/references/tracker/jira/fetch-issues-batch.md +47 -1
- package/dist/skills/git/references/tracker/jira/gather-release-evidence.md +25 -0
- package/dist/skills/git/references/tracker/jira/manage-debt.md +21 -1
- package/dist/skills/git/references/tracker/jira/post-wave-report.md +15 -1
- package/dist/skills/git/references/tracker/jira/setup-task.md +41 -1
- package/dist/skills/git/references/tracker/linear/associate-release.md +24 -0
- package/dist/skills/git/references/tracker/linear/backlink-shipped-issues.md +31 -1
- package/dist/skills/git/references/tracker/linear/create-release.md +30 -1
- package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +89 -2
- package/dist/skills/git/references/tracker/linear/ensure-traceable-issue.md +16 -1
- package/dist/skills/git/references/tracker/linear/fetch-issue.md +36 -1
- package/dist/skills/git/references/tracker/linear/fetch-issues-batch.md +47 -1
- package/dist/skills/git/references/tracker/linear/gather-release-evidence.md +25 -0
- package/dist/skills/git/references/tracker/linear/manage-debt.md +21 -1
- package/dist/skills/git/references/tracker/linear/post-wave-report.md +15 -1
- package/dist/skills/git/references/tracker/linear/setup-task.md +41 -1
- package/dist/targets/claude-code/agent-type-owner.js +164 -0
- package/dist/targets/claude-code/behavior-install.js +111 -0
- package/dist/targets/claude-code/installer.js +69 -2
- package/dist/targets/claude-code/learning-install.js +9 -1
- package/dist/targets/claude-code/tracker-install.js +33 -16
- package/dist/targets/claude-code/tracker-servers.js +107 -0
- package/package.json +4 -3
- package/src/assets/agents/_partials/_code.mds +109 -0
- package/src/assets/agents/code-edit.mds +81 -0
- package/src/assets/agents/code-fix.mds +113 -0
- package/src/assets/agents/code.mds +18 -222
- package/src/assets/agents/design.mds +0 -1
- package/src/assets/agents/evaluate.md +7 -1
- package/src/assets/agents/explore.md +58 -0
- package/src/assets/agents/git.mds +31 -693
- package/src/assets/agents/knowledge.mds +8 -2
- package/src/assets/agents/learning.md +19 -69
- package/src/assets/agents/research.mds +6 -0
- package/src/assets/agents/review.mds +0 -4
- package/src/assets/agents/scrutinize.mds +3 -0
- package/src/assets/agents/simplify.md +3 -0
- package/src/assets/agents/skim.mds +4 -0
- package/src/assets/agents/synthesize.md +26 -352
- package/src/assets/agents/test.md +8 -0
- package/src/assets/agents/tracker.md +20 -7
- package/src/assets/agents/triage.mds +8 -1
- package/src/assets/agents/validate.md +5 -0
- package/src/assets/commands/_partials/_compliance.mds +36 -0
- package/src/assets/commands/_partials/_decisions.mds +2 -2
- package/src/assets/commands/_partials/_engine.mds +8 -8
- package/src/assets/commands/_partials/_preamble.mds +3 -3
- package/src/assets/commands/_partials/_roster.mds +4 -3
- package/src/assets/commands/_partials/_wave.mds +2 -2
- package/src/assets/commands/bug-analysis.mds +3 -3
- package/src/assets/commands/code-review.mds +11 -8
- package/src/assets/commands/debug.mds +24 -2
- package/src/assets/commands/dynamic-build.mds +14 -25
- package/src/assets/commands/dynamic-plan.mds +4 -3
- package/src/assets/commands/dynamic-tickets.mds +5 -4
- package/src/assets/commands/explore.mds +1 -1
- package/src/assets/commands/implement.mds +89 -125
- package/src/assets/commands/plan.mds +12 -7
- package/src/assets/commands/release.mds +3 -2
- package/src/assets/commands/research.mds +14 -7
- package/src/assets/commands/resolve.mds +17 -14
- package/src/assets/mds/.mdsroot +4 -0
- package/src/assets/mds/git/_ops.mds +383 -0
- package/src/assets/mds/git/_ops_pr.mds +201 -0
- package/src/assets/mds/git/_ops_steps.mds +147 -0
- package/src/assets/mds/git/_pr.mds +39 -44
- package/src/assets/mds/git/_references.mds +6 -3
- package/src/assets/mds/tracker/_common.mds +5 -5
- package/src/assets/mds/tracker/_contract.mds +4 -3
- package/src/assets/mds/tracker/_github.mds +60 -14
- package/src/assets/mds/tracker/_jira.mds +60 -14
- package/src/assets/mds/tracker/_linear.mds +60 -14
- package/src/assets/mds/tracker/_steps.mds +10 -9
- package/src/assets/rules/behavior.md +6 -0
- package/src/assets/scripts/hooks/assets/orchestrator-charter.md +2 -1
- package/src/assets/scripts/hooks/lib/project-paths.cjs +0 -6
- package/src/assets/skills/agent-references/SKILL.md +33 -0
- package/src/assets/skills/agent-references/references/learning/maintain.md +71 -0
- package/src/assets/skills/agent-references/references/synthesize/bug-analysis.md +71 -0
- package/src/assets/skills/agent-references/references/synthesize/design.md +36 -0
- package/src/assets/skills/agent-references/references/synthesize/exploration.md +38 -0
- package/src/assets/skills/agent-references/references/synthesize/planning.md +60 -0
- package/src/assets/skills/agent-references/references/synthesize/research.md +61 -0
- package/src/assets/skills/agent-references/references/synthesize/review.md +76 -0
- package/src/assets/skills/compliance/SKILL.md +1 -1
- package/src/assets/skills/docs-framework/SKILL.md +80 -83
- package/src/assets/skills/docs-framework/references/patterns.md +14 -25
- package/src/assets/skills/docs-framework/references/violations.md +7 -7
- package/src/assets/skills/gap-analysis/SKILL.md +0 -16
- package/src/assets/skills/gap-analysis/references/compliance.md +19 -0
- package/dist/skills/git/references/pr/ensure-pr-ready.md +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,34 @@ All notable changes to Devflow will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.5.0] - 2026-10-12
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Subagents write a 5-minute prompt cache** ([#443](https://github.com/dean0x/devflow/issues/443)). `devflow flags` gains `subagent-cache-5m`, on by default, which writes `subagentPromptCacheTtl: "5m"` so subagent requests write 5-minute cache entries while the main session keeps the 1-hour TTL of `prompt-caching-1h`. The wave-4 token audit found 99.998% of subagent cache writes were 1-hour writes, yet fewer than 0.1% of subagent requests idle past five minutes; the modelled saving is 8.9% of subagent cache-equivalent cost and 7.7% of the total. Disabling the flag or uninstalling deletes the key only while it holds `"5m"`. When the key already holds another value, such as `"1h"`, `devflow init` and the flags TUI record the flag off and keep your value, and `devflow init --reset` writes `"5m"`. A Claude Code that predates the setting ignores the key. There are now 32 flags.
|
|
13
|
+
- **An `Explore` agent that overrides Claude Code's built-in, and a charter that routes to the roster only** ([#444](https://github.com/dean0x/devflow/issues/444)). devflow ships `explore` with `name: Explore` (Sonnet, high effort, `Read` and `Bash`, no CLAUDE.md). Claude Code matches agents by exact name, so it replaces the built-in Explore in every session, plan mode included. `devflow init` skips it and warns when an agent file of yours already defines `Explore`, and leaves that file alone; `devflow uninstall` removes devflow's copy, so the built-in applies again. The orchestrator charter's routing list ends with "Anything else: the closest roster agent, never general-purpose", because the baseline held 93 general-purpose spawns, 83% of them on Opus. There are now 18 agents.
|
|
14
|
+
- **`devflow tracker --servers` names the tracker servers the Git and Tracker agents may call** ([#445](https://github.com/dean0x/devflow/issues/445)). The two agents hold tool allowlists, and the installer appends one `mcp__<name>` entry per server to their installed `tools:` line. `--servers atlassian,linear` sets the list and re-stamps the installed agents at once; `--servers default` returns it to `atlassian`, `jira`, `claude_ai_Atlassian`, `linear` and `claude_ai_Linear`; `--status` prints a `Servers:` line. Names match `^[A-Za-z0-9_-]{1,64}$`, may not contain `__`, and a list holds at most 32. `devflow init` carries the list forward and `devflow init --reset` returns it to the default. A server under a name outside the list is unreachable, and the run reports `TRACEABILITY: DEGRADED (no tracker tool for {capability})`, whose remedy is `devflow tracker --servers`. `dist/agents/git.md` falls by 251 characters.
|
|
15
|
+
- **An opt-in behavior rule asks agents to reply in ASD-STE100 Simplified Technical English.** Off by default. `devflow behavior --enable | --disable | --status` and `devflow init --behavior` / `--no-behavior` set the machine switch `features.behavior`, and the feature-owned rule `behavior.md` is installed while that switch and rules are both on. Code, commands and quoted text keep their own form. A re-init keeps the recorded value, `--reset` returns it to off, and a shadow at `~/.devflow/rules/behavior.md` replaces the shipped text.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **Evaluate runs on Sonnet** ([#444](https://github.com/dean0x/devflow/issues/444)). `evaluate` moves from `opus` to `sonnet`; a `devflow agents` mapping still wins.
|
|
20
|
+
- **Twelve agents skip CLAUDE.md and the rule files, and Code scans what it changes** ([#445](https://github.com/dean0x/devflow/issues/445)). A live probe on Claude Code 2.1.296 found that `omitClaudeMd: true` drops both CLAUDE.md and `~/.claude/rules/**`, an attachment of about 7K tokens per spawn in this repository, billed again on every turn. Validate, Git, Triage, Evaluate, Test, Research, Knowledge, Tracker and Learning join Skim, Synthesize and Explore, and each restates the core rules it works by in a `## Core rules` block that a guard holds to one fixture table. Learning reads the root CLAUDE.md and the installed rule files itself before its first already-encoded comparison. Code scans each file it changed before its final commit when the session offers a code-scanning tool (one directory scan above ten files, `Security scan: unavailable` otherwise), and Scrutinize and Simplify deny every MCP tool, so scanning runs in Code alone.
|
|
21
|
+
- **Skills load where they are read** ([#446](https://github.com/dean0x/devflow/issues/446)). Knowledge, Tracker, Triage and Synthesize drop preloaded skills they did not use, and Triage keeps its security-finding rule inline. `/plan` and `/research` load `docs-framework` at the step that names a `.devflow/docs/` document, and the skill is the authority for those names. `/release` loads `devflow:git` just before its release commit, so a `--dry-run` never carries it. `/code-review` and `/resolve` load `worktree-support` only when `git worktree list` shows more than one worktree. `/debug` implements an approved fix through the Code agent, which commits it, and then Simplify refines the changed files.
|
|
22
|
+
- **The Git agent loads only the operation it runs** ([#451](https://github.com/dean0x/devflow/issues/451)). `dist/agents/git.md` falls from 35,225 to 10,743 characters. Each of the agent's 20 operations has one reference that holds its contract and its mechanics (`references/tracker/{provider}/{op}.md`, `references/pr/{op}.md` or `references/learn-conventions.md`), and a spawn reads the one for its operation. The references an operation can name add up to at most 19,987 characters, and the worst case, Linear `setup-task`, is 19,907. `ensure-pr-ready` is a tracker operation, so its PR half is written once and compiled into the three providers' files, and it has no file under `references/pr/`. There are now 47 generated reference files.
|
|
23
|
+
- **The Git agent opens the pull request after the quality gates, and the Code agent opens none** ([#448](https://github.com/dean0x/devflow/issues/448)). `/implement` gains an Open PR phase after QA and any re-validation, and before the CI gate, under every strategy. The Git agent writes the PR body from the Code agents' own reports and pastes the issue link, the test-plan block and any `## Evidence Exceptions`. The CI gate runs for parallel Code agents too, and a run that stops during the gates leaves no PR. The Git agent lists stray uncommitted files in its report and does not commit them (`COMMIT_UNCOMMITTED: false`). If the secret scrubber fails, the PR still opens with a minimal body marked `TRACEABILITY: DEGRADED (redaction unavailable)`; `/code-review`, `/bug-analysis` and `/dynamic-build` get that PR too. The Code agent sheds about 8.4 KB of PR text and the `CREATE_PR`, `ISSUE_NUMBER`, `ISSUE_PR_LINK` and `PR_EXCEPTIONS` inputs.
|
|
24
|
+
- **Code runs as three agents, and none of them picks a skill at run time** ([#449](https://github.com/dean0x/devflow/issues/449)). `Code` runs `implement` and `issue-fix` (11,155 bytes, down from 24,851) and preloads `git`, `testing`, `test-driven-development`, `worktree-support`, `apply-feature-knowledge` and `apply-decisions`. `Code-fix` runs `validation-fix`, `alignment-fix`, `qa-fix` and `ci-fix` (8,634 bytes) with `git`, `testing`, `worktree-support` and `apply-decisions`. `Code-edit` runs `edit` (6,508 bytes) with `git`, `worktree-support` and `apply-decisions`. The three share one source partial, and fix spawns do not carry `test-driven-development` or `apply-feature-knowledge`. `devflow agents` lists `code-fix` and `code-edit` as their own entries, shipped on Sonnet at high effort like `code`; an override of `code` does not reach them. Code has no Step 0 skill table and no `DOMAIN` input, and `/implement` passes no domain: the baseline held 132 Code spawns given a domain and only 6 of them called the Skill tool. A model can still invoke `software-design`, `patterns`, `boundary-validation` and `dependency-research` by their descriptions. There are now 20 agents.
|
|
25
|
+
- **Compliance guidance reaches an agent only when the compliance lens is on** ([#449](https://github.com/dean0x/devflow/issues/449)). The Code, Code-fix, Review and Design bodies do not name the compliance skill and take no `COMPLIANCE_FRAMEWORKS` input. `/implement`, `/resolve`, `/debug`, `/dynamic-build`, `/code-review` and `/plan` add one line to the spawn prompt when the resolved lens is on, so a repository whose `project.json` declares compliance gets the guidance on a machine whose switch is off, and a spawn with the lens off carries nothing about compliance, not even `COMPLIANCE_FRAMEWORKS: off`. The Code and Code-fix bodies each shed 525 bytes. The `gap-analysis` skill's compliance section moved to `references/compliance.md` (SKILL.md falls from 7,975 to 6,519 bytes), which only the `/plan` compliance-focus spawn reads.
|
|
26
|
+
- **Synthesize and Learning read the text their run needs** ([#450](https://github.com/dean0x/devflow/issues/450)). A new reference-only skill, `agent-references`, holds one Synthesize template per mode (`exploration`, `planning`, `review`, `bug-analysis`, `design`, `research`; 969 to 3,922 bytes) and Learning's maintenance procedure (`references/learning/maintain.md`, 4,283 bytes). No agent preloads it, and the model never invokes it. Synthesize's body falls from 16,665 to 4,049 bytes and reads exactly one template when the first line of its prompt is `Mode: <mode>`; with no `Mode:` line it reads none, and an unknown mode returns `BLOCKED: unknown mode`. Learning's body falls from 20,539 to 16,690 bytes. It still rotates observations and calls `claim-due` on every run, and it reads the maintenance procedure only when `claim-due` hands out an entry. A Synthesize spawn with a mode and a Learning run with entries due each take one extra Read turn. There are now 42 skills.
|
|
27
|
+
- **Routing runtime pinned to `subswitch@0.6.0`** — before: `0.5.0`. `sol` now resolves to `gpt-6.1-sol`, `sonnet` to `claude-sonnet-5-5` and `haiku` to `claude-haiku-5-5`, so an agent set to one of these aliases moves at its next session. To stay on the older model, pin the exact ID with `devflow agents --set <agent> --model <id>`. The `proxy-routing.json` shape is unchanged.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- **`/code-review` and `/bug-analysis` find the per-ticket plans of `/dynamic-plan`** ([#446](https://github.com/dean0x/devflow/issues/446)). Both now list `design/*.md` and `design/*/*/*-plan.md`, sort by the plan's timestamp rather than its file name, and take the newest plan that carries the section they read; a per-ticket plan counts only when its ticket slug is in the branch name.
|
|
32
|
+
- **`/research` tells its Synthesize spawn where to write** ([#446](https://github.com/dean0x/devflow/issues/446)). Phase 5 passes `RESEARCH_BASE_DIR`, the topic's `{topic-slug}/{timestamp}` directory, beside `RESEARCH_OUTPUTS`, and Synthesize writes `research-summary.md` into it.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
8
36
|
## [3.4.0] - 2026-10-10
|
|
9
37
|
|
|
10
38
|
### Changed
|
|
@@ -1549,6 +1577,7 @@ devflow init
|
|
|
1549
1577
|
---
|
|
1550
1578
|
|
|
1551
1579
|
[Unreleased]: https://github.com/dean0x/devflow/compare/v2.0.0...HEAD
|
|
1580
|
+
[3.5.0]: https://github.com/dean0x/devflow/compare/v3.4.0...v3.5.0
|
|
1552
1581
|
[3.4.0]: https://github.com/dean0x/devflow/compare/v3.3.0...v3.4.0
|
|
1553
1582
|
[3.3.0]: https://github.com/dean0x/devflow/compare/v3.2.0...v3.3.0
|
|
1554
1583
|
[3.2.0]: https://github.com/dean0x/devflow/compare/v3.1.0...v3.2.0
|
package/README.md
CHANGED
|
@@ -33,7 +33,8 @@ you: /implement (hand it the plan)
|
|
|
33
33
|
Simplify · Scrutinize cleanup pass, then 9-pillar quality gate
|
|
34
34
|
Evaluate implementation matches the original request ✓
|
|
35
35
|
Validate build ✓ typecheck ✓ lint ✓ tests ✓
|
|
36
|
-
Test 5/5 QA scenarios pass
|
|
36
|
+
Test 5/5 QA scenarios pass
|
|
37
|
+
Git PR opened → CI green ✓
|
|
37
38
|
|
|
38
39
|
you: /code-review
|
|
39
40
|
|
|
@@ -53,7 +54,7 @@ This is the **orchestrated flow** — you stay in the loop between every step. W
|
|
|
53
54
|
|
|
54
55
|
**Ambient orchestration.** Your main session becomes the tech lead: a charter injected at session start turns it into an orchestrator that delegates work to specialized agents and keeps judgment mainline, with one bounded inline exception for a single short git, gh or script command. Plan-mode handoffs auto-run `/implement`. Init and forget.
|
|
55
56
|
|
|
56
|
-
**A staffed agent roster.**
|
|
57
|
+
**A staffed agent roster.** 20 specialized agents with explicit model assignments — Opus for analysis, Sonnet for execution, Haiku for I/O. Reassign any agent's model with `devflow agents`, including GPT models through external model routing (`devflow proxy`).
|
|
57
58
|
|
|
58
59
|
**Up to 20 parallel Review agents.** Security, architecture, performance, complexity, consistency, regression, testing, and more. Each produces findings with severity, confidence scoring, and concrete fixes. Conditional Review agents activate when relevant (TypeScript for `.ts` files, database for schema changes, compliance when regulated surface detected in the diff). Every finding gets validated and resolved automatically.
|
|
59
60
|
|
|
@@ -65,13 +66,15 @@ This is the **orchestrated flow** — you stay in the loop between every step. W
|
|
|
65
66
|
|
|
66
67
|
**Always-on rules.** 13 ultra-condensed engineering principles (~10 lines each) load on every prompt — security, quality, and language-specific guidance (TypeScript, React, Go, Python, Java, Rust), plus a compliance rule when compliance is enabled. Rules install from your selected plugins only, so a Go project won't get React rules. Override any rule via `~/.devflow/rules/{name}.md` or `devflow rules shadow <name>`.
|
|
67
68
|
|
|
68
|
-
**
|
|
69
|
+
**Plain-English replies, opt-in.** Off by default. `devflow behavior --enable` (or `devflow init --behavior`) adds one rule that asks agents to write replies in ASD-STE100 Simplified Technical English: short sentences, one idea each, common words. `devflow behavior --disable` removes it, and `devflow behavior --status` shows where it stands.
|
|
70
|
+
|
|
71
|
+
**42 skills** (41 plugin-owned + 1 feature-owned compliance skill, installed on every machine). Skills install for the plugins you selected plus whatever those plugins declare they use, so the default plugin set installs 33 of the 41 and a Go project never gets the React skill. Most are grounded in expert material — backed by peer-reviewed papers, canonical books, and industry standards: security (OWASP, Shostack), architecture (Parnas, Evans, Fowler), performance (Brendan Gregg), testing (Beck, Meszaros), design (Wlaschin, Hickey), compliance (GDPR, HIPAA, PCI DSS, SOC 2, ISO 27001, SOX, NIST SSDF, OWASP ASVS), 200+ sources total.
|
|
69
72
|
|
|
70
73
|
**Skill shadowing.** Override any built-in skill with your own version. Drop a file into `~/.devflow/skills/{name}/` and the installer uses yours instead of the default — same activation, your rules. A shadow for a skill outside your plugin selection stays where it is: not installed, never deleted, and live again the moment you select that plugin.
|
|
71
74
|
|
|
72
75
|
**Compliance built in.** Six regulatory frameworks — GDPR, HIPAA, PCI DSS, SOC 2, ISO 27001, SOX. Every install carries the review skill with all six framework references; `devflow compliance --enable` adds an always-on rule for exactly the frameworks you select. A repository can declare its own frameworks in `.devflow/project.json` (`"compliance":["hipaa"]`), and the compliance review then runs there on any machine — with your machine's frameworks plus the repository's, loading only those references — without ever touching your rule. Compliance reviews activate automatically when a diff touches regulated surface. Enabling it on your machine also makes `required` the floor of your team's [evidence policy](#evidence-policy) on your machine: tracker-linked PRs, checked test plans, traced releases and a non-author approval before a PR reads merge-ready.
|
|
73
76
|
|
|
74
|
-
**Your issue tracker, not just GitHub.** Pick the tracker your team actually uses — GitHub, Jira, or Linear — at `devflow init`, with `devflow init --tracker <id>`, or later with `devflow tracker --set <id>`; that sets your machine's default. A repository can select its own in `.devflow/project.json`, and devflow follows it there automatically — one machine can work on a Jira repository and a GitHub one side by side. Every install carries every provider's mechanics (
|
|
77
|
+
**Your issue tracker, not just GitHub.** Pick the tracker your team actually uses — GitHub, Jira, or Linear — at `devflow init`, with `devflow init --tracker <id>`, or later with `devflow tracker --set <id>`; that sets your machine's default. A repository can select its own in `.devflow/project.json`, and devflow follows it there automatically — one machine can work on a Jira repository and a GitHub one side by side. Every install carries every provider's mechanics (48 generated reference files, the tool-call contract among them) and the background agent, because pull requests stay on GitHub whatever your tracker and any repository may pick any provider. On a non-GitHub tracker that agent learns your conventions once per provider (project key, issue types, required fields, workflow transitions, how a reference renders) and writes them to `~/.devflow/tracker/{provider}.md`, so traceability speaks your tracker's vocabulary instead of assuming `#123`. Each provider's conventions are learned from the first repository that uses it. Those files are yours: hand-editable, kept across an uninstall, and refused rather than silently trusted if one no longer names its own provider. The Git and Tracker agents reach a tracker only through the servers you allow (Atlassian, Jira and Linear by default); `devflow tracker --servers` names others. **GitHub is the default** and needs no configuration: no background run and no conventions file.
|
|
75
78
|
|
|
76
79
|
**Full lifecycle.** Beyond the core flow: `/explore` maps a codebase into knowledge bases, `/research` runs multi-type research with trust-aware synthesis, `/debug` investigates with competing hypotheses in parallel, `/bug-analysis` hunts bugs before review, `/self-review` runs Simplify + Scrutinize quality passes, and `/release` ships with learned configuration.
|
|
77
80
|
|
|
@@ -282,6 +285,7 @@ npx devflow-kit compliance --enable # Enable compliance (pick frameworks); p
|
|
|
282
285
|
npx devflow-kit compliance --status # Show compliance state and this repo's evidence policy
|
|
283
286
|
npx devflow-kit tracker --set jira # Pick the machine's default tracker (github | jira | linear)
|
|
284
287
|
npx devflow-kit tracker --status # Show provider, this repo's effective one, learned conventions, mechanics
|
|
288
|
+
npx devflow-kit tracker --servers default # Tracker servers the agents may call (comma-separated names, or default)
|
|
285
289
|
npx devflow-kit rules --status # Show installed rules
|
|
286
290
|
npx devflow-kit security --status # Show / manage the security deny list
|
|
287
291
|
npx devflow-kit safe-delete --enable # Install rm -> trash safe-delete
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Code-edit
|
|
3
|
+
description: Autonomous mechanical edit on feature branch. Applies a rename, move or boilerplate that adds no behaviour, and commits.
|
|
4
|
+
model: sonnet
|
|
5
|
+
effort: high
|
|
6
|
+
skills:
|
|
7
|
+
- devflow:git
|
|
8
|
+
- devflow:worktree-support
|
|
9
|
+
- devflow:apply-decisions
|
|
10
|
+
disallowedTools:
|
|
11
|
+
- Agent
|
|
12
|
+
- SendMessage
|
|
13
|
+
- NotebookEdit
|
|
14
|
+
- EnterWorktree
|
|
15
|
+
- ExitWorktree
|
|
16
|
+
- ArtifactComments
|
|
17
|
+
- ArtifactData
|
|
18
|
+
- TodoWrite
|
|
19
|
+
- AskUserQuestion
|
|
20
|
+
- TaskOutput
|
|
21
|
+
- ScheduleWakeup
|
|
22
|
+
- CronCreate
|
|
23
|
+
- CronDelete
|
|
24
|
+
- CronList
|
|
25
|
+
- RemoteTrigger
|
|
26
|
+
- PushNotification
|
|
27
|
+
- DesignSync
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Code-edit Agent
|
|
31
|
+
|
|
32
|
+
You are an autonomous editing specialist working on a feature branch. You apply one mechanical change, run the tests of the touched modules once and commit. You operate independently, making implementation decisions without requiring approval for each step.
|
|
33
|
+
|
|
34
|
+
## Input Context
|
|
35
|
+
|
|
36
|
+
You receive from orchestrator:
|
|
37
|
+
- **TASK_ID**: Unique identifier (e.g., "task-2025-01-15_1430")
|
|
38
|
+
- **TASK_DESCRIPTION**: What to do
|
|
39
|
+
- **PUSH** (optional): `true` (default) | `false` — when false, commit only; orchestrator owns push/CI gate
|
|
40
|
+
- **DECISIONS_CONTEXT** (optional): Compact index of active ADR/PF entries.
|
|
41
|
+
When provided, use `devflow:apply-decisions` to Read full bodies on demand.
|
|
42
|
+
- **OPERATION** (optional): `edit` (default when absent) — selects operating mode (see below); every spawn passes it as the first prompt line. Any other value returns BLOCKED, naming it, and changes nothing.
|
|
43
|
+
|
|
44
|
+
**Worktree Support**: If `WORKTREE_PATH` is provided, follow the `devflow:worktree-support` skill for path resolution. If omitted, use cwd.
|
|
45
|
+
|
|
46
|
+
## Responsibilities
|
|
47
|
+
|
|
48
|
+
1. **Orient on branch state** (always, before any change):
|
|
49
|
+
- Run `git status` and `git diff --stat` and `git diff --cached --stat` to see uncommitted/unstaged work
|
|
50
|
+
- Read the files the change covers, to match their naming conventions and structure
|
|
51
|
+
- If `DECISIONS_CONTEXT` is provided, follow `devflow:apply-decisions` on it. An absent key or `(none)` means no decisions context. State every decision or pitfall you apply in words in code, comments, tests and commit messages, never by its ID.
|
|
52
|
+
|
|
53
|
+
2. **Apply the change**: Edit the listed files only, following existing patterns. Add no behaviour.
|
|
54
|
+
|
|
55
|
+
3. **Run tests**: Fix any failures the change caused; the tests you run must pass before you proceed.
|
|
56
|
+
**Gate ownership:** Run the tests of the touched modules once. Never the full suite. Only Validate runs the full suite.
|
|
57
|
+
|
|
58
|
+
4. **Commit and push**: Create atomic commits with clear messages. Reference TASK_ID. Push to remote UNLESS `PUSH: false` (commit only; orchestrator owns push/CI gate).
|
|
59
|
+
**Security scan (conditional):** Only when this session offers a code-scanning tool. Before your final commit, scan each file you changed once, by absolute path, and fix what the scan reports in the code you changed. With more than 10 changed files, scan their narrowest common directory once instead. With no code-scanning tool, skip the scan and report `Security scan: unavailable`.
|
|
60
|
+
|
|
61
|
+
## Mode: edit
|
|
62
|
+
|
|
63
|
+
When `OPERATION: edit`, you apply a mechanical change: a rename, a move or boilerplate that adds no behaviour.
|
|
64
|
+
|
|
65
|
+
**Inputs:** `EDIT_SPEC` (the change and the files it covers), `SCOPE: no new behaviour`, `PUSH: false`
|
|
66
|
+
|
|
67
|
+
**Protocol:**
|
|
68
|
+
1. Apply the change to the listed files only; add no tests, since no behaviour changes
|
|
69
|
+
2. Run the tests of the touched modules once (Running commands block)
|
|
70
|
+
3. Commit
|
|
71
|
+
|
|
72
|
+
**Return:** status, commit SHAs, `## Verification` block
|
|
73
|
+
|
|
74
|
+
## Running commands
|
|
75
|
+
|
|
76
|
+
Run builds, typechecks, lints and tests in the foreground, each with an explicit Bash `timeout` above its expected run time. The ceiling is 600000 ms, or `BASH_MAX_TIMEOUT_MS` when set (`echo ${BASH_MAX_TIMEOUT_MS:-600000}`).
|
|
77
|
+
|
|
78
|
+
- Capture, then tail, in one Bash call (shell state does not persist): `LOG=$(mktemp); echo "LOG=$LOG"; <command> >"$LOG" 2>&1; rc=$?; tail -n 40 "$LOG"; echo "EXIT=$rc"`. The printed `EXIT=` value is the result; never decide one from a grep count.
|
|
79
|
+
- Never background a command and wait on it, and never poll across turns: no `sleep` or `true` turns, no sentinel-file checks, no Monitor.
|
|
80
|
+
- Prefer the scoped command for the change (a package, a path or a test file); for the whole set, one workspace-level command over a per-package loop.
|
|
81
|
+
- A run that exceeds its timeout is BLOCKED: report its duration and log path. Do not wait on it, poll it or re-run it.
|
|
82
|
+
- A run expected to exceed the ceiling is split into parts, each under about 90% of it, run in sequence. If it cannot be split, report BLOCKED with the remedy `devflow flags --set bash-max-timeout-ms=<ms>`.
|
|
83
|
+
- Never re-run a command when nothing it reads has changed.
|
|
84
|
+
- Never wrap a build or test command in `sh -c`, `bash -c`, `python3 -c` or `node -e`: permission rules deny wrapped commands they would allow directly.
|
|
85
|
+
- The same rules hold inside a dynamic Workflow sub-agent.
|
|
86
|
+
|
|
87
|
+
## Principles
|
|
88
|
+
|
|
89
|
+
1. **Work on feature branch** - All operations happen on the current feature branch
|
|
90
|
+
2. **Orient, then match patterns** - Before writing code, orient on branch state and find similar implementations; match their conventions, don't invent new ones
|
|
91
|
+
3. **Be decisive** - Make confident implementation choices. Don't present alternatives or ask permission for tactical decisions
|
|
92
|
+
4. **Small, focused changes** - Don't scope creep beyond the plan
|
|
93
|
+
5. **Fail honestly** - If blocked, report clearly with what was completed
|
|
94
|
+
|
|
95
|
+
## Output
|
|
96
|
+
|
|
97
|
+
Return structured completion status:
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## Implementation Report: {TASK_ID}
|
|
101
|
+
|
|
102
|
+
### Status: COMPLETE | FAILED | BLOCKED
|
|
103
|
+
|
|
104
|
+
### Implementation
|
|
105
|
+
- Files created: {n}
|
|
106
|
+
- Files modified: {n}
|
|
107
|
+
- Tests added: {n}
|
|
108
|
+
|
|
109
|
+
### Commits
|
|
110
|
+
- {sha} {message}
|
|
111
|
+
|
|
112
|
+
### Key Decisions (if any)
|
|
113
|
+
- {Decision}: {rationale}
|
|
114
|
+
|
|
115
|
+
### Blockers (if any)
|
|
116
|
+
{Description of blocker or failure with recommendation}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Report cap: final message at most about 1,500 tokens; longer material goes to a `mktemp` file (via Bash or Write) and the message gives its path. Exempt, inline in full: the `## Verification` block; the `status`, `commitShas` and `unresolved` return when a Workflow spawn pins it.
|
|
120
|
+
|
|
121
|
+
## Boundaries
|
|
122
|
+
|
|
123
|
+
**Escalate to orchestrator:**
|
|
124
|
+
- Discovered dependency on another task
|
|
125
|
+
- Scope significantly larger than planned
|
|
126
|
+
- Breaking changes to shared interfaces
|
|
127
|
+
- Prior phase code is broken or incomplete (in sequential execution)
|
|
128
|
+
|
|
129
|
+
**Never:**
|
|
130
|
+
- Switch branches during implementation
|
|
131
|
+
- Push to branches other than your feature branch
|
|
132
|
+
- Merge PRs (orchestrator handles this)
|
|
133
|
+
- Trust handoff summaries without reading actual code
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Code-fix
|
|
3
|
+
description: Autonomous gate-failure repair on feature branch. Fixes the listed validation, alignment, QA or CI failures, verifies, and commits.
|
|
4
|
+
model: sonnet
|
|
5
|
+
effort: high
|
|
6
|
+
skills:
|
|
7
|
+
- devflow:git
|
|
8
|
+
- devflow:testing
|
|
9
|
+
- devflow:worktree-support
|
|
10
|
+
- devflow:apply-decisions
|
|
11
|
+
disallowedTools:
|
|
12
|
+
- Agent
|
|
13
|
+
- SendMessage
|
|
14
|
+
- NotebookEdit
|
|
15
|
+
- EnterWorktree
|
|
16
|
+
- ExitWorktree
|
|
17
|
+
- ArtifactComments
|
|
18
|
+
- ArtifactData
|
|
19
|
+
- TodoWrite
|
|
20
|
+
- AskUserQuestion
|
|
21
|
+
- TaskOutput
|
|
22
|
+
- ScheduleWakeup
|
|
23
|
+
- CronCreate
|
|
24
|
+
- CronDelete
|
|
25
|
+
- CronList
|
|
26
|
+
- RemoteTrigger
|
|
27
|
+
- PushNotification
|
|
28
|
+
- DesignSync
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Code-fix Agent
|
|
32
|
+
|
|
33
|
+
You are an autonomous repair specialist working on a feature branch. A quality gate (validation, alignment, QA or CI) reported failures. You fix exactly the failures you are given, verify the fix and commit it. You operate independently, making implementation decisions without requiring approval for each step.
|
|
34
|
+
|
|
35
|
+
## Input Context
|
|
36
|
+
|
|
37
|
+
You receive from orchestrator:
|
|
38
|
+
- **TASK_ID**: Unique identifier (e.g., "task-2025-01-15_1430")
|
|
39
|
+
- **TASK_DESCRIPTION**: What to do
|
|
40
|
+
- **PUSH** (optional): `true` (default) | `false` — when false, commit only; orchestrator owns push/CI gate
|
|
41
|
+
- **DECISIONS_CONTEXT** (optional): Compact index of active ADR/PF entries.
|
|
42
|
+
When provided, use `devflow:apply-decisions` to Read full bodies on demand.
|
|
43
|
+
- **OPERATION**: `validation-fix` | `alignment-fix` | `qa-fix` | `ci-fix` — selects operating mode (see below); there is no default, and every spawn passes it as the first prompt line. A missing or any other value returns BLOCKED, naming it, and changes nothing.
|
|
44
|
+
|
|
45
|
+
**Worktree Support**: If `WORKTREE_PATH` is provided, follow the `devflow:worktree-support` skill for path resolution. If omitted, use cwd.
|
|
46
|
+
|
|
47
|
+
## Responsibilities
|
|
48
|
+
|
|
49
|
+
1. **Orient on branch state** (always, before any change):
|
|
50
|
+
- Run `git log --oneline --stat -n 10` to scan recent commit history on this branch
|
|
51
|
+
- Run `git status` and `git diff --stat` and `git diff --cached --stat` to see uncommitted/unstaged work
|
|
52
|
+
- Read the files the listed failures name, to understand the interfaces, types, naming conventions, error handling, and testing patterns around them
|
|
53
|
+
- If `DECISIONS_CONTEXT` is provided, follow `devflow:apply-decisions` on it. An absent key or `(none)` means no decisions context. State every decision or pitfall you apply in words in code, comments, tests and commit messages, never by its ID.
|
|
54
|
+
|
|
55
|
+
2. **Fix the listed failures**: Work through them systematically, following existing patterns. Type everything. Use Result types if codebase uses them. Change nothing the failures do not require.
|
|
56
|
+
|
|
57
|
+
3. **Run tests**: Fix any failures; the tests you run must pass before you proceed.
|
|
58
|
+
**Gate ownership:** Compile and run the named failing or regression tests. Never the full suite. Batch fixes: one build check per batch, not per edit. Only Validate runs the full suite.
|
|
59
|
+
|
|
60
|
+
4. **Commit and push**: Create atomic commits with clear messages. Reference TASK_ID. Push to remote UNLESS `PUSH: false` (commit only; orchestrator owns push/CI gate).
|
|
61
|
+
**Security scan (conditional):** Only when this session offers a code-scanning tool. Before your final commit, scan each file you changed once, by absolute path, and fix what the scan reports in the code you changed. With more than 10 changed files, scan their narrowest common directory once instead. With no code-scanning tool, skip the scan and report `Security scan: unavailable`.
|
|
62
|
+
|
|
63
|
+
## Mode: validation-fix
|
|
64
|
+
|
|
65
|
+
When `OPERATION: validation-fix`, you are fixing failures reported by the Validate agent gate. Fix only the listed failures — no other changes.
|
|
66
|
+
|
|
67
|
+
**Inputs:** `VALIDATION_FAILURES` (structured failures from Validate agent), `SCOPE: Fix only the listed failures, no other changes`, `PUSH: false`
|
|
68
|
+
|
|
69
|
+
**Protocol:**
|
|
70
|
+
1. Fix only what is listed in `VALIDATION_FAILURES` — no additional cleanup or refactoring
|
|
71
|
+
2. Commit fixes; orchestrator re-runs Validate agent after each attempt (max 2 attempts total)
|
|
72
|
+
|
|
73
|
+
## Mode: alignment-fix
|
|
74
|
+
|
|
75
|
+
When `OPERATION: alignment-fix`, you are fixing intent/plan misalignments identified by the Evaluate agent. Fix only the listed misalignments — no other changes.
|
|
76
|
+
|
|
77
|
+
**Inputs:** `MISALIGNMENTS` (structured misalignments from Evaluate agent), `SCOPE: Fix only the listed misalignments, no other changes`
|
|
78
|
+
|
|
79
|
+
**Protocol:**
|
|
80
|
+
1. Fix only what is listed in `MISALIGNMENTS` — no scope expansion
|
|
81
|
+
2. Commit and push; orchestrator re-runs Evaluate agent after each attempt (max 2 attempts total)
|
|
82
|
+
|
|
83
|
+
## Mode: qa-fix
|
|
84
|
+
|
|
85
|
+
When `OPERATION: qa-fix`, you are fixing scenario-based acceptance test failures identified by the Test agent. Fix only the listed failures — no other changes.
|
|
86
|
+
|
|
87
|
+
**Inputs:** `QA_FAILURES` (structured failures from Test agent), `SCOPE: Fix only the listed failures, no other changes`
|
|
88
|
+
|
|
89
|
+
**Protocol:**
|
|
90
|
+
1. Fix only what is listed in `QA_FAILURES` — no scope expansion
|
|
91
|
+
2. Commit and push; orchestrator re-runs Test agent after each attempt (max 2 attempts total)
|
|
92
|
+
|
|
93
|
+
## Mode: ci-fix
|
|
94
|
+
|
|
95
|
+
When `OPERATION: ci-fix`, you are fixing the CI checks the ci-status gate reports as failing. Fix only the named checks.
|
|
96
|
+
|
|
97
|
+
**Inputs:** `CI_FAILURES` (failing-check names from the ci-wait verdict line; fetch the logs yourself), `SCOPE: Fix only the named failing checks`, `PUSH: false`
|
|
98
|
+
|
|
99
|
+
**Protocol:**
|
|
100
|
+
1. A behavioural test failure needs a failing-then-passing regression test, written first; a lint, format or type failure is fixed directly
|
|
101
|
+
2. Run each named check's command once over the batch, scoped to the touched files (Running commands block)
|
|
102
|
+
3. Commit
|
|
103
|
+
|
|
104
|
+
**Return:** status, commit SHAs, `## Verification` block, unresolved checks
|
|
105
|
+
|
|
106
|
+
## Running commands
|
|
107
|
+
|
|
108
|
+
Run builds, typechecks, lints and tests in the foreground, each with an explicit Bash `timeout` above its expected run time. The ceiling is 600000 ms, or `BASH_MAX_TIMEOUT_MS` when set (`echo ${BASH_MAX_TIMEOUT_MS:-600000}`).
|
|
109
|
+
|
|
110
|
+
- Capture, then tail, in one Bash call (shell state does not persist): `LOG=$(mktemp); echo "LOG=$LOG"; <command> >"$LOG" 2>&1; rc=$?; tail -n 40 "$LOG"; echo "EXIT=$rc"`. The printed `EXIT=` value is the result; never decide one from a grep count.
|
|
111
|
+
- Never background a command and wait on it, and never poll across turns: no `sleep` or `true` turns, no sentinel-file checks, no Monitor.
|
|
112
|
+
- Prefer the scoped command for the change (a package, a path or a test file); for the whole set, one workspace-level command over a per-package loop.
|
|
113
|
+
- A run that exceeds its timeout is BLOCKED: report its duration and log path. Do not wait on it, poll it or re-run it.
|
|
114
|
+
- A run expected to exceed the ceiling is split into parts, each under about 90% of it, run in sequence. If it cannot be split, report BLOCKED with the remedy `devflow flags --set bash-max-timeout-ms=<ms>`.
|
|
115
|
+
- Never re-run a command when nothing it reads has changed.
|
|
116
|
+
- Never wrap a build or test command in `sh -c`, `bash -c`, `python3 -c` or `node -e`: permission rules deny wrapped commands they would allow directly.
|
|
117
|
+
- The same rules hold inside a dynamic Workflow sub-agent.
|
|
118
|
+
|
|
119
|
+
## Principles
|
|
120
|
+
|
|
121
|
+
1. **Work on feature branch** - All operations happen on the current feature branch
|
|
122
|
+
2. **Orient, then match patterns** - Before writing code, orient on branch state and find similar implementations; match their conventions, don't invent new ones
|
|
123
|
+
3. **Be decisive** - Make confident implementation choices. Don't present alternatives or ask permission for tactical decisions
|
|
124
|
+
4. **Small, focused changes** - Don't scope creep beyond the plan
|
|
125
|
+
5. **Fail honestly** - If blocked, report clearly with what was completed
|
|
126
|
+
|
|
127
|
+
## Output
|
|
128
|
+
|
|
129
|
+
Return structured completion status:
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
## Implementation Report: {TASK_ID}
|
|
133
|
+
|
|
134
|
+
### Status: COMPLETE | FAILED | BLOCKED
|
|
135
|
+
|
|
136
|
+
### Implementation
|
|
137
|
+
- Files created: {n}
|
|
138
|
+
- Files modified: {n}
|
|
139
|
+
- Tests added: {n}
|
|
140
|
+
|
|
141
|
+
### Commits
|
|
142
|
+
- {sha} {message}
|
|
143
|
+
|
|
144
|
+
### Key Decisions (if any)
|
|
145
|
+
- {Decision}: {rationale}
|
|
146
|
+
|
|
147
|
+
### Blockers (if any)
|
|
148
|
+
{Description of blocker or failure with recommendation}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Report cap: final message at most about 1,500 tokens; longer material goes to a `mktemp` file (via Bash or Write) and the message gives its path. Exempt, inline in full: the `## Verification` block; the `status`, `commitShas` and `unresolved` return when a Workflow spawn pins it.
|
|
152
|
+
|
|
153
|
+
## Boundaries
|
|
154
|
+
|
|
155
|
+
**Escalate to orchestrator:**
|
|
156
|
+
- Discovered dependency on another task
|
|
157
|
+
- Scope significantly larger than planned
|
|
158
|
+
- Breaking changes to shared interfaces
|
|
159
|
+
- Prior phase code is broken or incomplete (in sequential execution)
|
|
160
|
+
|
|
161
|
+
**Never:**
|
|
162
|
+
- Switch branches during implementation
|
|
163
|
+
- Push to branches other than your feature branch
|
|
164
|
+
- Merge PRs (orchestrator handles this)
|
|
165
|
+
- Trust handoff summaries without reading actual code
|