Skip to content

Commit eee3919

Browse files
jpicklykclaude
andauthored
release: v2.5.1 — fix IS_BLOCKED_BY enforcement in advance_item (#89) (#89)
* feat(plugin): add tiered execution model (Direct/Delegated/Parallel) Output style now classifies work into three tiers with proportional process. Direct tier (1-2 files, known fix) implements inline — no subagent dispatch, no plan mode, no separate review. Delegated and Parallel tiers preserve the full pipeline. Changes: - workflow-orchestrator.md: tier classification section, conditional principles, Direct Tier Workflow section, frontmatter added, removed project-specific references (session-retrospective, quick-fix schema, gradlew), removed redundant delegation templates - implement skill: tier-conditional Steps 1/3/4/5, two-dimensional classification (tier + interaction mode), resume-with-tier-awareness - pre-plan.mjs: Direct tier safety net message Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(plugin): trim workflow-orchestrator to universally valuable content Remove project-specific details, redundant templates, and niche operational guidance. Condense worktree dispatch to 4 universal principles, session tasks to one line, completion format to inline. Drop schema tag row, delegation metadata section, return format templates, and guidancePointer rendering convention. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(plugin): minor cleanup — schema context in implement skill, analyst zone updates - Implement skill: add schema context to session-tracking note reference - Workflow-analyst Zone 2: add Delegation Metadata section, tier-aware Parallel Dispatch reference - Workflow-analyst Zone 3: replace stale manifest monitoring with tier classification monitoring, connect analysis layer to /session-retrospective Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(plugin): strengthen planning hooks and enforce WHAT/HOW separation Planning hooks now use imperative gate language (PREREQUISITE/MUST/NEXT STEP) instead of suggestive phrasing that lost attention competition with plan mode. Output style trimmed to WHAT-level principles — procedural HOW detail moved to skills where it belongs. Worktree Dispatch section removed (prescriptive technique, not a principle). Skills get explicit handoff sections for clean control flow. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: enforce IS_BLOCKED_BY deps in advance_item and unblock detection IS_BLOCKED_BY dependencies were checked by get_blocked_items and get_next_item but silently ignored by advance_item (validateTransition) and CascadeDetector (findUnblockedItems/isFullyUnblocked). This meant agents could advance items past IS_BLOCKED_BY gates that the read-only tools correctly reported as blocked. - RoleTransitionHandler.validateTransition now queries findByFromItemId for outgoing IS_BLOCKED_BY edges in addition to findByToItemId for incoming BLOCKS edges - CascadeDetector.findUnblockedItems discovers IS_BLOCKED_BY targets via findByToItemId (incoming IS_BLOCKED_BY on the transitioning item) - CascadeDetector.isFullyUnblocked checks outgoing IS_BLOCKED_BY edges on the target item via findByFromItemId - All existing tests updated with explicit dep mocks (no relaxed defaults) - Added IS_BLOCKED_BY coverage for GetBlockedItemsTool, GetNextItemTool, and GetNextStatusTool (satisfied, unsatisfied, mixed, custom unblockAt) - Fixed reversed dependency example in quick-start.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(plugin): improve manage-schemas templates and guidance generation - Updated feature-implementation and bug-fix schema templates to align with spec-quality and review-quality frameworks - Added guidance generation rules (lead with consumer, structure over prose, concrete over generic, session-tracking prompt) - Added cross-schema duplication check when editing guidance values - Companion template now preserves markdown formatting in guidance text Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * release: bump to v2.5.1 — plugin v2.7.2 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: fix ktlint multiline expression formatting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3598e0f commit eee3919

17 files changed

Lines changed: 737 additions & 64 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"plugins": [
1111
{
1212
"name": "task-orchestrator",
13-
"version": "2.7.1",
13+
"version": "2.7.2",
1414
"description": "Skills, hooks, and workflows for MCP Task Orchestrator. Schema-aware context, note-driven workflow, and session hooks.",
1515
"author": {
1616
"name": "Jeff Picklyk",

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.5.1] - 2026-03-31 (Plugin v2.7.2)
9+
10+
### Fixed
11+
- Fixed `IS_BLOCKED_BY` dependencies not being enforced by `advance_item` — items could advance past IS_BLOCKED_BY gates that `get_blocked_items` and `get_next_item` correctly reported as blocked
12+
- Fixed `advance_item` unblock detection not discovering items with IS_BLOCKED_BY edges when their blocker completes
13+
- Fixed reversed dependency example in quick-start documentation
14+
15+
### Changed
16+
- Improved manage-schemas skill templates to align with spec-quality and review-quality frameworks
17+
- Added guidance generation rules and cross-schema duplication checks to manage-schemas edit workflow
18+
- Bumped plugin version to 2.7.2
19+
20+
---
21+
822
## [2.5.0] - 2026-03-30 (Plugin v2.7.1)
923

1024
### Changed

claude-plugins/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ removing and re-adding the marketplace in Claude Code. No version bump is needed
1010

1111
| Plugin | Directory | Current Version |
1212
|--------|-----------|-----------------|
13-
| `task-orchestrator` | `claude-plugins/task-orchestrator/` | `2.7.1` |
13+
| `task-orchestrator` | `claude-plugins/task-orchestrator/` | `2.7.2` |
1414

1515
> Updated automatically by `/prepare-release`. Do not bump manually.
1616

claude-plugins/task-orchestrator/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "task-orchestrator",
3-
"version": "2.7.1",
3+
"version": "2.7.2",
44
"description": "Claude Code integration for MCP Task Orchestrator — schema-aware context, note-driven workflow",
55
"skills": "./skills",
66
"hooks": "./hooks/hooks-config.json",

claude-plugins/task-orchestrator/skills/manage-schemas/references/companion-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Use this template when the user requests a companion skill in Step 4. Write to `.claude/skills/<schema-name>/SKILL.md`. Create the directory if it doesn't exist. This is a project-local skill available immediately as `/<schema-name>` — no plugin version bump required.
44

5-
Replace all `<placeholders>` with actual values from the schema built in Steps 1-2.
5+
Replace all `<placeholders>` with actual values from the schema built in Steps 1-2. Guidance text from the schema may contain markdown (bold headers, bullet points). Render it verbatim in the `**What to write:**` line — do not reformat.
66

77
---
88

claude-plugins/task-orchestrator/skills/manage-schemas/references/create-workflow.md

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ Otherwise, ask via `AskUserQuestion`:
1212

1313
```
1414
◆ How would you like to create the schema?
15-
1. Feature implementation — full lifecycle with design gates, implementation evidence,
16-
and optional deploy verification (5 notes across queue/work/review)
17-
2. Bug fix — lightweight schema for bug fixes: root cause before code,
18-
verification after (4 notes across queue/work)
15+
1. Feature implementation — specification gate (queue), implementation evidence
16+
+ session tracking (work), review checklist (review) — 4 notes
17+
2. Bug fix — diagnosis gate (queue), implementation evidence + session tracking (work),
18+
review checklist (review) — 4 notes
1919
3. Start from scratch — answer questions to build a custom schema
2020
```
2121

@@ -29,31 +29,26 @@ Show this schema to the user:
2929

3030
```yaml
3131
feature-implementation:
32-
- key: requirements
32+
- key: specification
3333
role: queue
3434
required: true
35-
description: "Problem statement and acceptance criteria."
36-
guidance: "Describe what problem this solves and who benefits. List 2-5 concrete acceptance criteria that define done."
37-
- key: design
38-
role: queue
39-
required: true
40-
description: "Chosen approach, alternatives considered, key risks."
41-
guidance: "Explain the implementation approach. Note any alternatives you ruled out and why. Call out risks or constraints."
35+
description: "Problem statement, approach, and pre-work plan."
36+
guidance: "This note is read by the implementation agent before writing code. Cover: **Problem statement** — what breaks or is missing, who is affected. **Acceptance criteria** — 2-5 concrete, testable criteria that define done. **Alternatives considered** — min 2 real options plus 'do nothing'; for each, state the trade-off that ruled it out (not strawman rejections). **Non-goals** — at least one thing a reader might expect this work to include that is deliberately excluded. **Blast radius** — every file, module, and interface the change touches; trace downstream consumers. **Risk flags** — the 1-2 things most likely to go wrong. **Test strategy** — name specific scenarios for happy paths, failure paths, and edge cases; 'add tests' is not a strategy."
4237
- key: implementation-notes
4338
role: work
4439
required: true
45-
description: "Key decisions made during implementation, deviations from design."
46-
guidance: "Document any surprises, wrong-turns, or deviations from the planned approach."
47-
- key: test-results
40+
description: "Context handoff for downstream agents — deviations, surprises, decisions."
41+
guidance: "This note is read by review agents and dependent tasks. They need to know: what decisions were made that weren't in the specification, which files were changed and why, any API or interface surprises encountered, assumptions from the specification that turned out wrong, and patterns discovered that affect dependent work."
42+
- key: session-tracking
4843
role: work
4944
required: true
50-
description: "Test pass/fail count and any new tests added."
51-
guidance: "Run tests and report total count and failures. List any new test classes or test cases added."
52-
- key: deploy-notes
45+
description: "Session context — what was done, how it went, anything the retrospective should know."
46+
guidance: "This note feeds retrospective analysis. Structure: **Outcome**: success | partial | failure. **Files changed**: list with one-line rationale each. **Deviations**: anything that differed from the specification. **Friction**: tool errors, unexpected roundtrips, API confusion — include type (optimization/friction/bug/missing-capability) and description. **Test results**: pass/fail counts, new tests added."
47+
- key: review-checklist
5348
role: review
54-
required: false
55-
description: "Deploy needed? Version bump? Reconnect required?"
56-
guidance: "Note whether a rebuild/deploy was done, what version was bumped to, and whether reconnect was required."
49+
required: true
50+
description: "Quality gate — plan alignment, test quality, simplification, verdict."
51+
guidance: "Run the test suite first — record total count and pass/fail. Then verify: (1) **Plan alignment** — walk each acceptance criterion from the specification and identify the code that satisfies it; flag criteria with no implementation and unplanned changes with no justification. (2) **Test quality** — map tests to the specification's test strategy; watch for tautological assertions, mock-heavy tests that verify nothing real, happy-path-only coverage when failure paths were required, and overly broad assertions like 'result != null'. (3) **Simplification** — note any unnecessary complexity, duplication, or over-engineering in changed files (do not apply fixes, only report). End with a verdict: **Pass** | **Fail — blocking issues** (list each) | **Pass with observations**."
5752
```
5853
5954
### Bug Fix Template
@@ -62,26 +57,26 @@ Show this schema to the user:
6257
6358
```yaml
6459
bug-fix:
65-
- key: reproduction-steps
60+
- key: diagnosis
6661
role: queue
6762
required: true
68-
description: "Step-by-step reproduction with expected vs actual result."
69-
guidance: "Include the exact steps or tool call that triggers the bug. State expected output and actual output."
70-
- key: root-cause
71-
role: queue
72-
required: true
73-
description: "Why it happens — file, line, and condition."
74-
guidance: "Identify the specific file and function where the defect lives. Explain the condition that triggers it."
75-
- key: fix-summary
63+
description: "Reproduction, root cause, fix approach, and test strategy."
64+
guidance: "This note is read by the implementation agent before writing code. Cover: **Reproduction steps** — exact inputs (tool call, parameters, or user action) plus expected output and actual output. **Root cause** — the specific file, function, and condition that causes the bug; state why that code path produces the wrong result. **Fix approach** — your chosen approach plus min 2 alternatives (including 'do nothing'); for each, state the trade-off that ruled it out. **Blast radius** — files and interfaces the fix touches; similar code paths that may have the same defect. **Test strategy** — a regression test that would have caught the original bug, plus edge cases around the fix boundary."
65+
- key: implementation-notes
7666
role: work
7767
required: true
78-
description: "What was changed and which files were modified."
79-
guidance: "List each file changed and summarize the change. Note any patterns that should be applied elsewhere."
80-
- key: test-verification
68+
description: "Context handoff — what changed, deviations from diagnosis, patterns to apply."
69+
guidance: "This note is read by review agents and dependent tasks. State: which files changed and what the specific change was, whether the root cause matched the diagnosis or differed (and how), patterns found in similar code paths that should be applied elsewhere, and edge cases discovered during implementation that weren't in the diagnosis."
70+
- key: session-tracking
8171
role: work
8272
required: true
83-
description: "How the fix was verified and test results after fix."
84-
guidance: "Run tests and report results. Note if a new test was added to cover the fix."
73+
description: "Session context — what was done, how it went, anything the retrospective should know."
74+
guidance: "This note feeds retrospective analysis. Structure: **Outcome**: success | partial | failure. **Files changed**: list with one-line rationale each. **Deviations**: anything that differed from the diagnosis. **Friction**: tool errors, unexpected roundtrips, API confusion — include type (optimization/friction/bug/missing-capability) and description. **Test results**: pass/fail counts, new tests added."
75+
- key: review-checklist
76+
role: review
77+
required: true
78+
description: "Quality gate — fix alignment, regression coverage, simplification, verdict."
79+
guidance: "Run the test suite first — record total count and pass/fail. Then verify: (1) **Fix alignment** — confirm the fix addresses the diagnosed root cause and does not merely mask symptoms; check implementation-notes for any deviation from the diagnosis. (2) **Regression test** — a test must exist that would have caught the original bug; verify it tests the actual failure condition, not just 'result != null'. (3) **Edge case coverage** — verify tests exist for edge cases named in the diagnosis test strategy. (4) **Simplification** — note any unnecessary complexity in changed files (do not apply fixes, only report). End with a verdict: **Pass** | **Fail — blocking issues** (list each) | **Pass with observations**."
8580
```
8681
8782
### After showing the template
@@ -135,11 +130,24 @@ Using answers from the gathering step, produce the YAML block. Apply these defau
135130
- First queue note's `guidance` should open with: `"Run /<schema-name> for the full lifecycle guide. For this note: <specific guidance>."` if a companion skill will be created
136131
- Use kebab-case for all keys
137132
- Keep `description` values under 80 chars
133+
- If a `session-tracking` note was added, use the standard structured guidance (see rule 4 below)
138134
139135
Show the generated YAML to the user and ask for confirmation before writing.
140136
141137
For YAML format reference and field rules, see `references/config-format.md` in this skill folder.
142138
139+
### Guidance Generation Rules
140+
141+
Apply these four disciplines when writing `guidance` values for any note — whether from a template customization or from-scratch Q&A:
142+
143+
1. **Lead with the consumer.** Open with who reads this note and what they need from it. Example: "This note is read by the review agent. They need to know which files changed and whether the implementation matches the specification."
144+
145+
2. **Structure over prose.** If the note covers 3 or more topics, use bold section headers (`**Header**`) rather than a prose paragraph. Agents and reviewers scan — they don't read walls of text.
146+
147+
3. **Concrete over generic.** Specify the actual verification action, not the category. "State which files changed and the specific function modified" instead of "describe the approach." "Name specific test scenarios for happy paths and failure paths" instead of "add tests."
148+
149+
4. **Session-tracking prompt.** If the schema includes a work phase, ask: "Most schemas include a session-tracking note (work phase) for retrospective analysis. Add one? [Yes/No]" If yes, use this standard guidance: `"This note feeds retrospective analysis. Structure: **Outcome**: success | partial | failure. **Files changed**: list with one-line rationale each. **Deviations**: from plan or diagnosis. **Friction**: tool errors, unexpected roundtrips, API confusion — include type (optimization/friction/bug/missing-capability) and description. **Test results**: pass/fail counts, new tests added."`
150+
143151
---
144152
145153
## Step 4 — Write Config

claude-plugins/task-orchestrator/skills/manage-schemas/references/edit-workflow.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ What would you like to change?
4444
Ask for: key (kebab-case), role (queue/work/review), required (yes/no), description (under 80 chars), guidance (optional).
4545
Append the new note entry to the schema's list in the correct role group.
4646

47+
When writing guidance for the new note, apply these generation rules:
48+
- **Lead with the consumer** — open with who reads this note and what they need from it
49+
- **Structure over prose** — use bold section headers (`**Header**`) if the note covers 3 or more topics
50+
- **Concrete over generic** — "state which files changed" not "describe the approach"
51+
- If adding a `session-tracking` note, offer the standard structured guidance: `"This note feeds retrospective analysis. Structure: **Outcome**: success | partial | failure. **Files changed**: list with one-line rationale each. **Deviations**: from plan or diagnosis. **Friction**: tool errors, unexpected roundtrips, API confusion — include type and description. **Test results**: pass/fail counts, new tests added."`
52+
4753
### Remove a Note
4854
Show numbered list, ask which to remove. Warn: "Existing notes on items under this key will become orphaned ad-hoc notes — they won't be deleted but will no longer be schema-enforced."
4955
Remove the entry from the YAML list.
@@ -56,6 +62,30 @@ Warn if toggling to required: "Items that have already passed this phase without
5662
Show current value, ask for the new value. Apply.
5763
Remind: descriptions should stay under 80 chars.
5864

65+
#### Cross-Schema Duplication Check
66+
67+
After the user provides a new guidance value, scan all schemas in `.taskorchestrator/config.yaml` for notes with the **same key name** (e.g., `session-tracking`, `implementation-notes`).
68+
69+
If any other schema contains a note with the same key:
70+
1. Compare guidance text — classify as **identical** (exact match), **near-identical** (same structure, minor wording differences), or **different**
71+
2. Present the finding:
72+
73+
```
74+
◆ This key also appears in other schemas:
75+
- "feature-task" → session-tracking (guidance is identical)
76+
- "bug-fix" → session-tracking (guidance is near-identical)
77+
78+
Update all instances?
79+
1. Yes — update all to the new value
80+
2. No — only update this schema
81+
3. Show me the differences first
82+
```
83+
84+
3. If the user selects "Show me the differences", display the current schema's old value alongside each other schema's current value, then re-ask
85+
4. Apply based on choice — when updating all, report each schema updated in the Write Back summary
86+
87+
This check triggers on **key name match** regardless of guidance similarity. The value is catching drift cases where the same concept (e.g., `session-tracking`) has diverged across schemas over time.
88+
5989
### Rename Key
6090
Show current key, ask for the new key name.
6191
**WARNING:** "Renaming a key orphans all existing notes written under the old key name. Those notes will remain on their items as ad-hoc notes but will no longer match the schema. There is no automatic migration. Proceed?"

current/docs/quick-start.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ create_work_tree(
218218
{ref: "tests", title: "Integration tests"}
219219
],
220220
deps=[
221-
{from: "tests", to: "api"},
222-
{from: "tests", to: "ui"}
221+
{from: "api", to: "tests"},
222+
{from: "ui", to: "tests"}
223223
]
224224
)
225225

0 commit comments

Comments
 (0)