ace-assign 0.37.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.
- checksums.yaml +7 -0
- data/.ace-defaults/assign/catalog/composition-rules.yml +211 -0
- data/.ace-defaults/assign/catalog/recipes/batch-tasks.recipe.yml +44 -0
- data/.ace-defaults/assign/catalog/recipes/documentation.recipe.yml +35 -0
- data/.ace-defaults/assign/catalog/recipes/fix-and-review.recipe.yml +32 -0
- data/.ace-defaults/assign/catalog/recipes/implement-simple.recipe.yml +29 -0
- data/.ace-defaults/assign/catalog/recipes/implement-with-pr.recipe.yml +48 -0
- data/.ace-defaults/assign/catalog/recipes/release-only.recipe.yml +34 -0
- data/.ace-defaults/assign/catalog/steps/apply-feedback.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/commit.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/create-pr.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/create-retro.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/fix-tests.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/lint.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/mark-task-done.step.yml +57 -0
- data/.ace-defaults/assign/catalog/steps/onboard-base.step.yml +19 -0
- data/.ace-defaults/assign/catalog/steps/onboard.step.yml +19 -0
- data/.ace-defaults/assign/catalog/steps/plan-task.step.yml +17 -0
- data/.ace-defaults/assign/catalog/steps/pre-commit-review.step.yml +34 -0
- data/.ace-defaults/assign/catalog/steps/push-to-remote.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/rebase-with-main.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/reflect-and-refactor.step.yml +57 -0
- data/.ace-defaults/assign/catalog/steps/release-minor.step.yml +23 -0
- data/.ace-defaults/assign/catalog/steps/release.step.yml +23 -0
- data/.ace-defaults/assign/catalog/steps/reorganize-commits.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/research.step.yml +19 -0
- data/.ace-defaults/assign/catalog/steps/review-pr.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/security-audit.step.yml +22 -0
- data/.ace-defaults/assign/catalog/steps/split-subtree-root.step.yml +25 -0
- data/.ace-defaults/assign/catalog/steps/squash-changelog.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/task-load.step.yml +29 -0
- data/.ace-defaults/assign/catalog/steps/update-docs.step.yml +38 -0
- data/.ace-defaults/assign/catalog/steps/update-pr-desc.step.yml +28 -0
- data/.ace-defaults/assign/catalog/steps/verify-e2e.step.yml +42 -0
- data/.ace-defaults/assign/catalog/steps/verify-test-suite.step.yml +48 -0
- data/.ace-defaults/assign/catalog/steps/verify-test.step.yml +36 -0
- data/.ace-defaults/assign/catalog/steps/work-on-task.step.yml +23 -0
- data/.ace-defaults/assign/config.yml +48 -0
- data/.ace-defaults/assign/presets/fix-bug.yml +65 -0
- data/.ace-defaults/assign/presets/quick-implement.yml +41 -0
- data/.ace-defaults/assign/presets/release-only.yml +35 -0
- data/.ace-defaults/assign/presets/work-on-docs.yml +41 -0
- data/.ace-defaults/assign/presets/work-on-task.yml +179 -0
- data/.ace-defaults/nav/protocols/skill-sources/ace-assign.yml +19 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-assign.yml +19 -0
- data/CHANGELOG.md +1415 -0
- data/README.md +87 -0
- data/Rakefile +16 -0
- data/docs/exit-codes.md +61 -0
- data/docs/getting-started.md +121 -0
- data/docs/handbook.md +40 -0
- data/docs/usage.md +224 -0
- data/exe/ace-assign +16 -0
- data/handbook/guides/fork-context.g.md +231 -0
- data/handbook/skills/as-assign-compose/SKILL.md +24 -0
- data/handbook/skills/as-assign-create/SKILL.md +23 -0
- data/handbook/skills/as-assign-drive/SKILL.md +24 -0
- data/handbook/skills/as-assign-prepare/SKILL.md +23 -0
- data/handbook/skills/as-assign-recover-fork/SKILL.md +22 -0
- data/handbook/skills/as-assign-run-in-batches/SKILL.md +23 -0
- data/handbook/skills/as-assign-start/SKILL.md +25 -0
- data/handbook/workflow-instructions/assign/compose.wf.md +256 -0
- data/handbook/workflow-instructions/assign/create.wf.md +215 -0
- data/handbook/workflow-instructions/assign/drive.wf.md +666 -0
- data/handbook/workflow-instructions/assign/prepare.wf.md +469 -0
- data/handbook/workflow-instructions/assign/recover-fork.wf.md +233 -0
- data/handbook/workflow-instructions/assign/run-in-batches.wf.md +212 -0
- data/handbook/workflow-instructions/assign/start.wf.md +46 -0
- data/lib/ace/assign/atoms/assign_frontmatter_parser.rb +173 -0
- data/lib/ace/assign/atoms/catalog_loader.rb +101 -0
- data/lib/ace/assign/atoms/composition_rules.rb +219 -0
- data/lib/ace/assign/atoms/number_generator.rb +110 -0
- data/lib/ace/assign/atoms/preset_expander.rb +277 -0
- data/lib/ace/assign/atoms/step_file_parser.rb +207 -0
- data/lib/ace/assign/atoms/step_numbering.rb +227 -0
- data/lib/ace/assign/atoms/step_sorter.rb +66 -0
- data/lib/ace/assign/atoms/tree_formatter.rb +106 -0
- data/lib/ace/assign/cli/commands/add.rb +102 -0
- data/lib/ace/assign/cli/commands/assignment_target.rb +55 -0
- data/lib/ace/assign/cli/commands/create.rb +63 -0
- data/lib/ace/assign/cli/commands/fail.rb +43 -0
- data/lib/ace/assign/cli/commands/finish.rb +88 -0
- data/lib/ace/assign/cli/commands/fork_run.rb +229 -0
- data/lib/ace/assign/cli/commands/list.rb +166 -0
- data/lib/ace/assign/cli/commands/retry_cmd.rb +42 -0
- data/lib/ace/assign/cli/commands/select.rb +45 -0
- data/lib/ace/assign/cli/commands/start.rb +40 -0
- data/lib/ace/assign/cli/commands/status.rb +407 -0
- data/lib/ace/assign/cli.rb +144 -0
- data/lib/ace/assign/models/assignment.rb +107 -0
- data/lib/ace/assign/models/assignment_info.rb +66 -0
- data/lib/ace/assign/models/queue_state.rb +326 -0
- data/lib/ace/assign/models/step.rb +197 -0
- data/lib/ace/assign/molecules/assignment_discoverer.rb +57 -0
- data/lib/ace/assign/molecules/assignment_manager.rb +276 -0
- data/lib/ace/assign/molecules/fork_session_launcher.rb +102 -0
- data/lib/ace/assign/molecules/queue_scanner.rb +130 -0
- data/lib/ace/assign/molecules/skill_assign_source_resolver.rb +376 -0
- data/lib/ace/assign/molecules/step_renumberer.rb +227 -0
- data/lib/ace/assign/molecules/step_writer.rb +246 -0
- data/lib/ace/assign/organisms/assignment_executor.rb +1299 -0
- data/lib/ace/assign/version.rb +7 -0
- data/lib/ace/assign.rb +141 -0
- metadata +289 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: plan-task
|
|
2
|
+
skill: as-task-plan
|
|
3
|
+
description: Analyze task requirements and create an implementation plan
|
|
4
|
+
|
|
5
|
+
produces: [implementation-plan]
|
|
6
|
+
consumes: [project-base-context, task-spec]
|
|
7
|
+
|
|
8
|
+
context:
|
|
9
|
+
default: fork
|
|
10
|
+
reason: "Planning benefits from focused exploration"
|
|
11
|
+
|
|
12
|
+
when_to_skip:
|
|
13
|
+
- "Task is trivial and doesn't need a plan"
|
|
14
|
+
- "Implementation plan already exists"
|
|
15
|
+
|
|
16
|
+
effort: light
|
|
17
|
+
tags: [planning, analysis]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: pre-commit-review
|
|
2
|
+
skill: null
|
|
3
|
+
description: Run /review agent command (conversation slash command, not bash) when supported; fall back to ace-lint
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: work-on-task
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Review should inspect current implementation diff before verification/release"
|
|
9
|
+
|
|
10
|
+
produces: [pre-commit-review-findings]
|
|
11
|
+
consumes: [code-changes]
|
|
12
|
+
|
|
13
|
+
context:
|
|
14
|
+
default: null
|
|
15
|
+
reason: "Native review execution depends on the current agent/client context"
|
|
16
|
+
|
|
17
|
+
when_to_skip:
|
|
18
|
+
- "subtree.pre_commit_review is false"
|
|
19
|
+
- "No changed files are present in the subtree diff"
|
|
20
|
+
- "Detected client is not in subtree.native_review_clients"
|
|
21
|
+
|
|
22
|
+
effort: light
|
|
23
|
+
tags: [review, quality, pre-commit, subtree]
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- name: resolve-review-path
|
|
27
|
+
description: "Resolve review mode from subtree config and detect active client/provider"
|
|
28
|
+
- name: run-native-review
|
|
29
|
+
description: "Review uncommitted changes and find issues using the /review agent slash command (NOT a bash command)"
|
|
30
|
+
- name: summarize-findings
|
|
31
|
+
description: "Present findings summary and preserve raw output when structure is incomplete"
|
|
32
|
+
- name: enforce-blocking
|
|
33
|
+
description: "If pre_commit_review_block is true and critical findings are confidently detected, block downstream release"
|
|
34
|
+
conditional: "subtree.pre_commit_review_block is true"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: push-to-remote
|
|
2
|
+
skill: null
|
|
3
|
+
description: Push all changes to the remote repository
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "push to remote"
|
|
7
|
+
- "push branch"
|
|
8
|
+
- "publish branch"
|
|
9
|
+
- "push changes"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: work-on-task
|
|
13
|
+
strength: required
|
|
14
|
+
reason: "Must have commits to push"
|
|
15
|
+
|
|
16
|
+
produces: [remote-sync]
|
|
17
|
+
consumes: [commits]
|
|
18
|
+
|
|
19
|
+
context:
|
|
20
|
+
default: null
|
|
21
|
+
reason: "Push needs access to git state in main context"
|
|
22
|
+
|
|
23
|
+
when_to_skip:
|
|
24
|
+
- "Remote is already up to date"
|
|
25
|
+
- "Working in local-only mode"
|
|
26
|
+
|
|
27
|
+
effort: trivial
|
|
28
|
+
tags: [git, publishing, remote]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: rebase-with-main
|
|
2
|
+
skill: as-git-rebase
|
|
3
|
+
description: Rebase current branch onto origin/main while preserving changelog intent
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "rebase with main"
|
|
7
|
+
- "rebase with origin main"
|
|
8
|
+
- "rebase onto main"
|
|
9
|
+
- "sync with main"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: work-on-task
|
|
13
|
+
strength: recommended
|
|
14
|
+
reason: "Rebase is typically done after local work is ready"
|
|
15
|
+
|
|
16
|
+
produces: [rebased-history]
|
|
17
|
+
consumes: [commits, remote-main]
|
|
18
|
+
|
|
19
|
+
context:
|
|
20
|
+
default: null
|
|
21
|
+
reason: "Rebase rewrites local git history and must run in main context"
|
|
22
|
+
|
|
23
|
+
when_to_skip:
|
|
24
|
+
- "Branch already contains latest origin/main"
|
|
25
|
+
- "Repository policy forbids rebasing this branch"
|
|
26
|
+
|
|
27
|
+
effort: light
|
|
28
|
+
tags: [git, history, rebase]
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: reflect-and-refactor
|
|
2
|
+
skill: null # No dedicated skill — the driving agent follows the steps directly, using ace-review and ace-git-commit as tools
|
|
3
|
+
description: Analyze implementation against ATOM principles and execute targeted refactoring before PR creation
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: work-on-task
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Must have implementation to reflect on"
|
|
9
|
+
- name: verify-test-suite
|
|
10
|
+
strength: required
|
|
11
|
+
reason: "Tests must pass before reflection — refactoring a broken build wastes effort"
|
|
12
|
+
|
|
13
|
+
produces: [refactoring-commits, findings-report]
|
|
14
|
+
consumes: [code-changes, test-results]
|
|
15
|
+
|
|
16
|
+
context:
|
|
17
|
+
default: null # Inherits from assignment-level context (typically inline, not forked)
|
|
18
|
+
reason: "Reflection needs access to full diff and project context"
|
|
19
|
+
|
|
20
|
+
when_to_skip:
|
|
21
|
+
- "Assignment was trivial (e.g., docs-only, config change)"
|
|
22
|
+
- "No substantive code changes to analyze"
|
|
23
|
+
- "Explicitly skipped in assignment configuration"
|
|
24
|
+
|
|
25
|
+
effort: light
|
|
26
|
+
tags: [quality, architecture, reflection]
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: demo-validate
|
|
30
|
+
optional: true
|
|
31
|
+
description: "Run functional demo proving the feature works end-to-end"
|
|
32
|
+
skip_when: "verify-test-suite already covers functional validation (E2E tests exist and passed)"
|
|
33
|
+
on_failure: "Trigger re-plan mechanism instead of proceeding to analysis"
|
|
34
|
+
|
|
35
|
+
- name: analyze
|
|
36
|
+
description: "Review diff using architecture-reflection ace-review preset"
|
|
37
|
+
tool: "ace-review --preset architecture-reflection"
|
|
38
|
+
|
|
39
|
+
- name: decide
|
|
40
|
+
description: "Produce findings report categorizing items as refactor/accept/skip"
|
|
41
|
+
|
|
42
|
+
- name: refactor
|
|
43
|
+
description: "Execute bounded refactoring based on findings (single iteration, capped scope)"
|
|
44
|
+
constraints:
|
|
45
|
+
max_iterations: 1
|
|
46
|
+
scope: "Only items categorized as 'refactor' in findings report"
|
|
47
|
+
|
|
48
|
+
- name: commit
|
|
49
|
+
description: "Commit refactoring changes separately from implementation commits"
|
|
50
|
+
tool: "ace-git-commit"
|
|
51
|
+
|
|
52
|
+
replan:
|
|
53
|
+
trigger: "Demo validation failure OR architecture analysis finds structural misalignment"
|
|
54
|
+
distinguished_from: "fix-tests handles test failures; re-plan handles architectural rework"
|
|
55
|
+
max_reruns: 1
|
|
56
|
+
max_subtasks: 2
|
|
57
|
+
after_replan: "Follow-up sub-tasks execute, then reflect-and-refactor runs once more (no further re-plan)"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: release-minor
|
|
2
|
+
description: Release modified packages and update CHANGELOGs following semver
|
|
3
|
+
|
|
4
|
+
prerequisites:
|
|
5
|
+
- name: verify-test
|
|
6
|
+
strength: recommended
|
|
7
|
+
reason: "Verify changes are stable before releasing subtree output"
|
|
8
|
+
|
|
9
|
+
produces: [version-bump, changelog-entries, commits]
|
|
10
|
+
consumes: [code-changes]
|
|
11
|
+
|
|
12
|
+
context:
|
|
13
|
+
default: null
|
|
14
|
+
reason: "Version bump needs access to git state and changelog/version files"
|
|
15
|
+
|
|
16
|
+
when_to_skip:
|
|
17
|
+
- "No version-worthy changes since last release"
|
|
18
|
+
- "Release is handled externally"
|
|
19
|
+
|
|
20
|
+
workflow: wfi://release/publish
|
|
21
|
+
|
|
22
|
+
effort: light
|
|
23
|
+
tags: [git, versioning, release]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
description: Release modified packages and update CHANGELOGs following semver
|
|
3
|
+
|
|
4
|
+
prerequisites:
|
|
5
|
+
- name: work-on-task
|
|
6
|
+
strength: recommended
|
|
7
|
+
reason: "Should have code changes before releasing"
|
|
8
|
+
|
|
9
|
+
produces: [version-bump, changelog-entries, commits]
|
|
10
|
+
consumes: [code-changes]
|
|
11
|
+
|
|
12
|
+
context:
|
|
13
|
+
default: null
|
|
14
|
+
reason: "Version bump needs access to git state and version.rb in main context"
|
|
15
|
+
|
|
16
|
+
when_to_skip:
|
|
17
|
+
- "No version-worthy changes since last release"
|
|
18
|
+
- "Release is handled externally"
|
|
19
|
+
|
|
20
|
+
workflow: wfi://release/publish
|
|
21
|
+
|
|
22
|
+
effort: light
|
|
23
|
+
tags: [git, versioning, release]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: reorganize-commits
|
|
2
|
+
skill: as-git-reorganize-commits
|
|
3
|
+
description: Reorganize commits into logical groups for clean history
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "reorganize commits"
|
|
7
|
+
- "clean up commits"
|
|
8
|
+
- "rewrite commit history"
|
|
9
|
+
- "tidy commit history"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: work-on-task
|
|
13
|
+
strength: required
|
|
14
|
+
reason: "Must have commits to reorganize"
|
|
15
|
+
|
|
16
|
+
produces: [clean-history]
|
|
17
|
+
consumes: [commits]
|
|
18
|
+
|
|
19
|
+
context:
|
|
20
|
+
default: null
|
|
21
|
+
reason: "Reorganizing rewrites git history in main context"
|
|
22
|
+
|
|
23
|
+
when_to_skip:
|
|
24
|
+
- "Only one commit on branch"
|
|
25
|
+
- "History is already clean and logical"
|
|
26
|
+
|
|
27
|
+
effort: light
|
|
28
|
+
tags: [git, history, cleanup]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: research
|
|
2
|
+
skill: as-search-research
|
|
3
|
+
description: Research a topic, codebase pattern, or external documentation
|
|
4
|
+
|
|
5
|
+
prerequisites: []
|
|
6
|
+
|
|
7
|
+
produces: [research-findings]
|
|
8
|
+
consumes: []
|
|
9
|
+
|
|
10
|
+
context:
|
|
11
|
+
default: fork
|
|
12
|
+
reason: "Research benefits from focused exploration without side effects"
|
|
13
|
+
|
|
14
|
+
when_to_skip:
|
|
15
|
+
- "Topic is already well understood"
|
|
16
|
+
- "Research was completed in a previous assignment"
|
|
17
|
+
|
|
18
|
+
effort: medium
|
|
19
|
+
tags: [analysis, exploration]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: review-pr
|
|
2
|
+
skill: as-review-pr
|
|
3
|
+
description: Review code changes for correctness, style, and best practices
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: create-pr
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Must have a PR to review"
|
|
9
|
+
|
|
10
|
+
produces: [review-feedback]
|
|
11
|
+
consumes: [pull-request]
|
|
12
|
+
|
|
13
|
+
context:
|
|
14
|
+
default: fork
|
|
15
|
+
reason: "Review benefits from isolated analysis without implementation bias"
|
|
16
|
+
|
|
17
|
+
when_to_skip:
|
|
18
|
+
- "No code changes since last review"
|
|
19
|
+
- "Changes are trivial (typo fix, config update)"
|
|
20
|
+
|
|
21
|
+
effort: medium
|
|
22
|
+
tags: [review, quality]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: security-audit
|
|
2
|
+
skill: null
|
|
3
|
+
description: Review changes for security vulnerabilities and sensitive data exposure
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: work-on-task
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Must have code changes to audit"
|
|
9
|
+
|
|
10
|
+
produces: [security-report]
|
|
11
|
+
consumes: [code-changes]
|
|
12
|
+
|
|
13
|
+
context:
|
|
14
|
+
default: fork
|
|
15
|
+
reason: "Security review benefits from isolated, focused analysis"
|
|
16
|
+
|
|
17
|
+
when_to_skip:
|
|
18
|
+
- "Changes don't touch security-sensitive code"
|
|
19
|
+
- "Changes are purely cosmetic (docs, comments)"
|
|
20
|
+
|
|
21
|
+
effort: medium
|
|
22
|
+
tags: [security, review, quality]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: split-subtree-root
|
|
2
|
+
description: Orchestrate subtree delegation and execution for split parent steps
|
|
3
|
+
|
|
4
|
+
instructions:
|
|
5
|
+
common:
|
|
6
|
+
- "Subtree root orchestrator step."
|
|
7
|
+
- "This step is orchestration-only."
|
|
8
|
+
- "Do not execute the parent workflow directly in this parent step."
|
|
9
|
+
- "Child steps: {{sub_steps}}."
|
|
10
|
+
- "If subtree execution fails: use adaptive minimal-safe replay (do not replay whole subtree by default)."
|
|
11
|
+
- "Inject only required recovery steps before retrying failed or affected steps."
|
|
12
|
+
fork:
|
|
13
|
+
- "Delegate this subtree into forked context:"
|
|
14
|
+
- "- ace-assign fork-run --assignment <assignment-id>@{{parent_number}}"
|
|
15
|
+
- "Inside the forked agent, continue execution within this subtree scope only."
|
|
16
|
+
- "Note: fork-run may take 10-30 minutes. If your environment has bash timeout limits, run in background and poll scoped status with stepped backoff (5m -> 3m -> 1m -> every 60s)."
|
|
17
|
+
- "After fork-run completes: read all subtree report files before continuing. The driver is the guard — review reports to verify quality before advancing."
|
|
18
|
+
- "For failed subtrees: recovery typically includes context refresh (onboard + report review) and verify-test-suite before retry."
|
|
19
|
+
inline:
|
|
20
|
+
- "Execute only child steps under this node."
|
|
21
|
+
|
|
22
|
+
goal_header: "Goal to satisfy through child steps:"
|
|
23
|
+
|
|
24
|
+
effort: low
|
|
25
|
+
tags: [orchestration, fork, split-step]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: squash-changelog
|
|
2
|
+
skill: as-docs-squash-changelog
|
|
3
|
+
description: Squash multiple changelog entries into one before merge
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "squash changelog"
|
|
7
|
+
- "squash changelog entries"
|
|
8
|
+
- "consolidate changelog"
|
|
9
|
+
- "merge changelog entries"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: release
|
|
13
|
+
strength: recommended
|
|
14
|
+
reason: "Most useful after release notes have been generated"
|
|
15
|
+
|
|
16
|
+
produces: [changelog-entries]
|
|
17
|
+
consumes: [changelog-entries]
|
|
18
|
+
|
|
19
|
+
context:
|
|
20
|
+
default: null
|
|
21
|
+
reason: "Changelog edits and git staging happen in main context"
|
|
22
|
+
|
|
23
|
+
when_to_skip:
|
|
24
|
+
- "There is only one relevant changelog entry"
|
|
25
|
+
- "Changelog has already been consolidated for this branch"
|
|
26
|
+
|
|
27
|
+
effort: trivial
|
|
28
|
+
tags: [docs, changelog, release]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: task-load
|
|
2
|
+
skill: null
|
|
3
|
+
description: "Load task behavioral spec: run `ace-bundle task://<taskref>`"
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: onboard-base
|
|
7
|
+
strength: recommended
|
|
8
|
+
reason: "Needs project context for task interpretation"
|
|
9
|
+
|
|
10
|
+
produces: [task-spec]
|
|
11
|
+
consumes: [project-base-context]
|
|
12
|
+
|
|
13
|
+
context:
|
|
14
|
+
default: null
|
|
15
|
+
reason: "Task loading needs access to the main conversation context"
|
|
16
|
+
|
|
17
|
+
instructions: |
|
|
18
|
+
Load task behavioral spec: run `ace-bundle task://{{taskref}}`
|
|
19
|
+
|
|
20
|
+
**Dependency context**: If the task spec has a `dependencies` field listing other task refs:
|
|
21
|
+
1. For each dependency ref, run `ace-bundle task://<dep-ref>` to load the completed sibling's spec
|
|
22
|
+
2. Read any work-on-task and plan-task reports for the dependency's subtree from `.ace-local/assign/` reports directory
|
|
23
|
+
3. This context is critical for planning — it reveals what was already implemented and what to build upon
|
|
24
|
+
|
|
25
|
+
when_to_skip:
|
|
26
|
+
- "Task spec already loaded in context"
|
|
27
|
+
|
|
28
|
+
effort: light
|
|
29
|
+
tags: [setup, context-loading, task]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: update-docs
|
|
2
|
+
skill: as-docs-update
|
|
3
|
+
description: Update public-facing documentation when CLI contracts or public APIs change
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: work-on-task
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Must know what changed to update docs accurately"
|
|
9
|
+
- name: release
|
|
10
|
+
strength: recommended
|
|
11
|
+
reason: "Version number should be known before updating docs"
|
|
12
|
+
|
|
13
|
+
produces: [updated-docs]
|
|
14
|
+
consumes: [code-changes]
|
|
15
|
+
|
|
16
|
+
context:
|
|
17
|
+
default: null
|
|
18
|
+
reason: "Documentation updates run inline (lightweight, no fork needed)"
|
|
19
|
+
|
|
20
|
+
when_to_skip:
|
|
21
|
+
- "No public CLI contract changes (internal refactoring, private methods only)"
|
|
22
|
+
- "Documentation was already updated as part of work-on-task"
|
|
23
|
+
- "Task is documentation-only (no new code changes to document)"
|
|
24
|
+
|
|
25
|
+
effort: light
|
|
26
|
+
tags: [documentation, quality]
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: identify-scope
|
|
30
|
+
description: "Identify which packages had CLI/API contract changes by reviewing the diff"
|
|
31
|
+
|
|
32
|
+
- name: update-usage-docs
|
|
33
|
+
description: "Run /as-docs-update-usage for each affected package"
|
|
34
|
+
tool: "ace-docs-update-usage <package>"
|
|
35
|
+
|
|
36
|
+
- name: verify-docs
|
|
37
|
+
description: "Run ace-docs validate on updated files to confirm format is correct"
|
|
38
|
+
tool: "ace-docs validate <files>"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: update-pr-desc
|
|
2
|
+
skill: as-github-pr-update
|
|
3
|
+
description: Update PR description with implementation summary and final state
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "update pr description"
|
|
7
|
+
- "update pull request description"
|
|
8
|
+
- "refresh pr description"
|
|
9
|
+
- "sync pr description"
|
|
10
|
+
|
|
11
|
+
prerequisites:
|
|
12
|
+
- name: create-pr
|
|
13
|
+
strength: required
|
|
14
|
+
reason: "Must have an existing PR to update"
|
|
15
|
+
|
|
16
|
+
produces: [pr-description]
|
|
17
|
+
consumes: [pull-request, code-changes]
|
|
18
|
+
|
|
19
|
+
context:
|
|
20
|
+
default: null
|
|
21
|
+
reason: "Needs access to PR state and git history"
|
|
22
|
+
|
|
23
|
+
when_to_skip:
|
|
24
|
+
- "PR description is already up to date"
|
|
25
|
+
- "No changes since PR was created"
|
|
26
|
+
|
|
27
|
+
effort: trivial
|
|
28
|
+
tags: [git, pr, documentation]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: verify-e2e
|
|
2
|
+
skill: as-e2e-review
|
|
3
|
+
render: step_template
|
|
4
|
+
description: Review E2E coverage for modified packages and run targeted scenarios
|
|
5
|
+
|
|
6
|
+
prerequisites:
|
|
7
|
+
- name: work-on-task
|
|
8
|
+
strength: required
|
|
9
|
+
reason: "Must have implementation to test"
|
|
10
|
+
- name: verify-test-suite
|
|
11
|
+
strength: recommended
|
|
12
|
+
reason: "Unit tests should pass before running E2E"
|
|
13
|
+
|
|
14
|
+
produces: [e2e-results, coverage-matrix]
|
|
15
|
+
consumes: [code-changes]
|
|
16
|
+
|
|
17
|
+
context:
|
|
18
|
+
default: null
|
|
19
|
+
reason: "E2E review and execution run in the project environment"
|
|
20
|
+
|
|
21
|
+
when_to_skip:
|
|
22
|
+
- "No public CLI API changes (internal-only refactoring)"
|
|
23
|
+
- "Package has no E2E test scenarios and no coverage gaps identified"
|
|
24
|
+
- "All modified files are docs-only (*.md, *.yml non-config, task specs, retros)"
|
|
25
|
+
|
|
26
|
+
effort: medium
|
|
27
|
+
tags: [testing, e2e, verification]
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- name: review-coverage
|
|
31
|
+
description: "Run /as-e2e-review for each heavily modified package to get coverage matrix"
|
|
32
|
+
tool: "ace-e2e-review <package>"
|
|
33
|
+
note: "Identify gaps, overlaps, and which TCs need updating before running"
|
|
34
|
+
|
|
35
|
+
- name: update-if-needed
|
|
36
|
+
description: "If coverage matrix shows gaps or stale TCs, update or create E2E tests"
|
|
37
|
+
conditional: "coverage-matrix shows gaps or outdated TCs"
|
|
38
|
+
|
|
39
|
+
- name: run-targeted
|
|
40
|
+
description: "Run ace-test-e2e-suite for each heavily modified package (not full suite)"
|
|
41
|
+
tool: "ace-test-e2e-suite <package>"
|
|
42
|
+
note: "Pass package name(s) of heavily modified packages only"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: verify-test-suite
|
|
2
|
+
skill: as-test-verify-suite
|
|
3
|
+
render: step_template
|
|
4
|
+
description: Run package test suites with profiling to verify correctness and performance
|
|
5
|
+
intent:
|
|
6
|
+
phrases:
|
|
7
|
+
- "run tests"
|
|
8
|
+
- "run test suite"
|
|
9
|
+
- "verify tests"
|
|
10
|
+
- "test changes"
|
|
11
|
+
- "check tests"
|
|
12
|
+
|
|
13
|
+
prerequisites:
|
|
14
|
+
- name: work-on-task
|
|
15
|
+
strength: recommended
|
|
16
|
+
reason: "Should have code changes to verify"
|
|
17
|
+
|
|
18
|
+
produces: [test-results]
|
|
19
|
+
consumes: [code-changes]
|
|
20
|
+
|
|
21
|
+
context:
|
|
22
|
+
default: null
|
|
23
|
+
reason: "Test execution needs access to project environment"
|
|
24
|
+
|
|
25
|
+
when_to_skip:
|
|
26
|
+
- "No code changes that could affect tests (documentation-only)"
|
|
27
|
+
- "Tests were already run and profiled in a previous step"
|
|
28
|
+
|
|
29
|
+
effort: light
|
|
30
|
+
tags: [testing, verification, performance]
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- name: run-package-tests
|
|
34
|
+
description: "Run ace-test --profile 6 for each modified package"
|
|
35
|
+
tool: "ace-test --profile 6"
|
|
36
|
+
note: "Profile reveals slow tests; run per-package, not full monorepo"
|
|
37
|
+
|
|
38
|
+
- name: check-performance-budgets
|
|
39
|
+
description: "Verify no test exceeds documented thresholds"
|
|
40
|
+
note: "Atoms <50ms, molecules <100ms, integration <1s, full package <30s. Tests must not make real network calls or unnecessary filesystem I/O."
|
|
41
|
+
|
|
42
|
+
- name: fix-violations
|
|
43
|
+
description: "Stub I/O and mock external calls for tests exceeding budgets"
|
|
44
|
+
conditional: "performance violations detected"
|
|
45
|
+
|
|
46
|
+
- name: run-suite
|
|
47
|
+
description: "Run ace-test-suite to verify no cross-package regressions"
|
|
48
|
+
tool: "ace-test-suite"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: verify-test
|
|
2
|
+
skill: null
|
|
3
|
+
description: Run profile-guided tests for modified packages only; no full-suite run in subtree
|
|
4
|
+
|
|
5
|
+
prerequisites:
|
|
6
|
+
- name: work-on-task
|
|
7
|
+
strength: required
|
|
8
|
+
reason: "Implementation should be complete before verification"
|
|
9
|
+
|
|
10
|
+
produces: [test-results]
|
|
11
|
+
consumes: [code-changes]
|
|
12
|
+
|
|
13
|
+
context:
|
|
14
|
+
default: null
|
|
15
|
+
reason: "Test execution needs access to the project working tree and package contexts"
|
|
16
|
+
|
|
17
|
+
when_to_skip:
|
|
18
|
+
- "No code changes in test-relevant files"
|
|
19
|
+
- "Tests were already profiled for the same subtree run"
|
|
20
|
+
|
|
21
|
+
effort: light
|
|
22
|
+
tags: [testing, verification, performance]
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: run-package-tests
|
|
26
|
+
description: "Run ace-test --profile 6 for each modified package in this subtree"
|
|
27
|
+
tool: "ace-test --profile 6"
|
|
28
|
+
note: "Execute per-package; do not run full-stack suite here"
|
|
29
|
+
|
|
30
|
+
- name: check-performance-budgets
|
|
31
|
+
description: "Verify no test exceeds documented thresholds"
|
|
32
|
+
note: "Atoms <50ms, molecules <100ms, integration <1s, full package suite <30s. Tests must not make real network calls or unnecessary filesystem I/O."
|
|
33
|
+
|
|
34
|
+
- name: fix-violations
|
|
35
|
+
description: "Fix slow or environment-coupled tests when violations are detected"
|
|
36
|
+
conditional: "performance budgets are exceeded"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: work-on-task
|
|
2
|
+
skill: as-task-work
|
|
3
|
+
description: Implement task changes following project conventions
|
|
4
|
+
intent:
|
|
5
|
+
phrases:
|
|
6
|
+
- "work on task"
|
|
7
|
+
- "implement task"
|
|
8
|
+
- "task work"
|
|
9
|
+
- "build feature"
|
|
10
|
+
|
|
11
|
+
produces: [code-changes, commits]
|
|
12
|
+
consumes: [project-base-context, task-spec]
|
|
13
|
+
|
|
14
|
+
context:
|
|
15
|
+
default: fork
|
|
16
|
+
reason: "Substantial implementation benefits from focused agent"
|
|
17
|
+
|
|
18
|
+
when_to_skip:
|
|
19
|
+
- "Task is documentation-only"
|
|
20
|
+
- "Changes are already implemented"
|
|
21
|
+
|
|
22
|
+
effort: medium
|
|
23
|
+
tags: [implementation, core-workflow]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# ace-assign default configuration
|
|
2
|
+
# Override in ~/.ace/assign/config.yml or .ace/assign/config.yml
|
|
3
|
+
|
|
4
|
+
# Directory where assignments are stored
|
|
5
|
+
cache_dir: ".ace-local/assign"
|
|
6
|
+
|
|
7
|
+
# Main step numbering step (gaps for injection)
|
|
8
|
+
step_increment: 10
|
|
9
|
+
|
|
10
|
+
# Sub-step numbering format
|
|
11
|
+
subtask_format: "%02d"
|
|
12
|
+
|
|
13
|
+
# Maximum sub-step depth (e.g., 010.01.01 = 3 levels)
|
|
14
|
+
max_subtask_depth: 3
|
|
15
|
+
|
|
16
|
+
# Additional skill metadata lookup roots (relative to project root unless absolute)
|
|
17
|
+
# Canonical sources come from protocol registrations in .ace-defaults/nav/protocols/skill-sources/*.yml.
|
|
18
|
+
skill_source_paths: []
|
|
19
|
+
|
|
20
|
+
# Workflow lookup roots (relative to project root unless absolute)
|
|
21
|
+
workflow_source_paths:
|
|
22
|
+
- "ace-task/handbook/workflow-instructions"
|
|
23
|
+
- "ace-assign/handbook/workflow-instructions"
|
|
24
|
+
|
|
25
|
+
# Fork execution defaults
|
|
26
|
+
execution:
|
|
27
|
+
provider: "claude:opus@yolo"
|
|
28
|
+
timeout: 1800
|
|
29
|
+
|
|
30
|
+
# Subtree execution behavior
|
|
31
|
+
subtree:
|
|
32
|
+
pre_commit_review: true
|
|
33
|
+
pre_commit_review_provider: "auto" # auto | native | skip
|
|
34
|
+
pre_commit_review_block: false
|
|
35
|
+
native_review_clients:
|
|
36
|
+
- "claude"
|
|
37
|
+
- "codex"
|
|
38
|
+
|
|
39
|
+
# Provider-level defaults for CLI invocation
|
|
40
|
+
providers:
|
|
41
|
+
cli:
|
|
42
|
+
- "claude"
|
|
43
|
+
- "claudeoai"
|
|
44
|
+
- "gemini"
|
|
45
|
+
- "codex"
|
|
46
|
+
- "codexoss"
|
|
47
|
+
- "opencode"
|
|
48
|
+
- "pi"
|