Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/agents/content/_partials/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ The `_partials` directory itself never appears in installed output.
For each `.md` source file the install pipeline performs, in order:

1. **Expand includes.** `expandIncludes(srcPath, contentDir)` resolves all directive shapes recursively and substitutes slot content.
2. **Merge frontmatter** (subagents only). Platform-specific frontmatter overrides from `_data/{platform}.yml` are merged into the source's frontmatter.
2. **Merge frontmatter** (subagents only). Platform-specific frontmatter overrides from `_data/{platform}.yaml` are merged into the source's frontmatter.
3. **Rewrite tool-name placeholders.** `rewriteToolNames(content, mapping)` replaces each `{tool:NAME}` placeholder using the platform's `_tools:` mapping from the same overlay YAML. An unmapped name is a fatal install error anchored to the source file and line. See [Tool-name placeholders](#tool-name-placeholders).
4. **Inject the provenance marker.** A `GENERATED FILE` comment is added at the top of the output, with a `Source:` link to the original file.
5. **Rewrite paths** (skills only, post-write). Bare-relative Markdown links are rewritten to absolute platform paths.
Expand All @@ -52,10 +52,10 @@ Expansion runs before the dry-run gate, so missing partials, cycles, and out-of-

## Tool-name placeholders

Subagent and skill body text reference tools using the `{tool:NAME}` placeholder so the same source can install for platforms that name their tools differently. `NAME` is the canonical (Claude) tool name (`Read`, `Write`, `Edit`, `Bash`, `Grep`, `Glob`). The install pipeline rewrites each placeholder using the platform's `_tools:` mapping, which lives at the top of each overlay YAML at `content/subagents/_data/{platform}.yml`.
Subagent and skill body text reference tools using the `{tool:NAME}` placeholder so the same source can install for platforms that name their tools differently. `NAME` is the canonical (Claude) tool name (`Read`, `Write`, `Edit`, `Bash`, `Grep`, `Glob`). The install pipeline rewrites each placeholder using the platform's `_tools:` mapping, which lives at the top of each overlay YAML at `content/subagents/_data/{platform}.yaml`.

```yaml
# content/subagents/_data/rovodev.yml
# content/subagents/_data/rovodev.yaml
_tools:
Bash: bash
Edit: find_and_replace_code
Expand Down
24 changes: 12 additions & 12 deletions packages/agents/content/skills/_data/artifact-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -550,17 +550,17 @@ Each role maps to one of five workflow-function types:

### Artifact entry fields

| Field | Required | Description |
| ----------- | -------- | --------------------------------------------------------------------------------------- |
| `filename` | yes | Artifact filename (without directory path) |
| `role` | yes | Filename role segment (e.g., `reviewer`, `code-reviewer`) |
| `roleType` | yes | Workflow function (one of: `orchestrator`, `analyst`, `planner`, `author`, `reviewer`) |
| `agent` | yes | Task tool `subagent_type` value (e.g., `orchestrated-reviewer`, `aspect-code-reviewer`) |
| `type` | yes | Artifact type (e.g., `review`, `change-summary`) |
| `phase` | yes | Phase that produced this artifact (camelCase, matches `phases` object keys) |
| `createdAt` | yes | ISO 8601 timestamp |
| `iteration` | no | Review iteration number (for `parallelReview` phase) |
| `note` | no | Free-text context about the artifact |
| Field | Required | Description |
| ----------- | -------- | ----------------------------------------------------------------------------------------- |
| `filename` | yes | Artifact filename (without directory path) |
| `role` | yes | Filename role segment (e.g., `reviewer`, `code-reviewer`) |
| `roleType` | yes | Workflow function (one of: `orchestrator`, `analyst`, `planner`, `author`, `reviewer`) |
| `agent` | yes | {tool:Task} `subagent_type` value (e.g., `orchestrated-reviewer`, `aspect-code-reviewer`) |
| `type` | yes | Artifact type (e.g., `review`, `change-summary`) |
| `phase` | yes | Phase that produced this artifact (camelCase, matches `phases` object keys) |
| `createdAt` | yes | ISO 8601 timestamp |
| `iteration` | no | Review iteration number (for `parallelReview` phase) |
| `note` | no | Free-text context about the artifact |

### Phase values

Expand Down Expand Up @@ -597,7 +597,7 @@ Companion file in the same run directory. Each line is a JSON object (JSONL form

### Event types

All 13 valid event types and their required fields. Fields suffixed with `?` are optional — usage fields (`tokens`, `toolUses`, `durationMs`) are present on newer runs where the orchestrator captures Task result metrics; older runs omit them:
All 13 valid event types and their required fields. Fields suffixed with `?` are optional — usage fields (`tokens`, `toolUses`, `durationMs`) are present on newer runs where the orchestrator captures {tool:Task} result metrics; older runs omit them:

| Event type | Key fields |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Resolve a ticket source argument into ticket content and metadata. Skills that a

| Input form | Resolution |
| ----------------------------------------------------------- | ----------------------------------------------------------------- |
| URL to a known platform (GitHub, Jira, etc.) | Use platform CLI or WebFetch to retrieve issue content |
| Other URL | WebFetch the URL content |
| URL to a known platform (GitHub, Jira, etc.) | Use platform CLI if available; otherwise, fetch the URL content |
| Other URL | Fetch the URL content |
| Shorthand reference (`#99`, `issue 99`, `GitHub issue #99`) | Resolve platform (see below), then fetch via platform CLI |
| File path | Read the file |
| Plain text | Use as-is |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Analyze a completed orchestrated run to identify cost-saving opportunities while

2. **Verify the run directory** contains `run-log.jsonl` and `run-index.json`. If either is missing, report and exit.

3. **Dispatch the savings-analyzer subagent** via Task tool:
3. **Dispatch the savings-analyzer subagent** via {tool:Task}:
- Model: `haiku`
- Prompt: Provide the run directory path and the next available sequence number for the artifact filename
- The subagent reads the event log, applies the analysis framework, and writes the artifact
Expand All @@ -31,9 +31,9 @@ Analyze a completed orchestrated run to identify cost-saving opportunities while

## Auto-trigger integration

This skill is also invoked automatically during Phase 5 (summary) of orchestrated runs. The orchestrate engine dispatches the savings-analyzer subagent as a background Task while the orchestrator writes the run-summary inline. When auto-triggered:
This skill is also invoked automatically during Phase 5 (summary) of orchestrated runs. The orchestrate engine dispatches the savings-analyzer subagent as a background {tool:Task} while the orchestrator writes the run-summary inline. When auto-triggered:

- The run directory is known from the active run context
- The sequence number follows the run-summary artifact
- The model is Haiku (configured via the `savings_analyzer` model key, defaulting to `haiku`)
- Zero added latency: The analysis runs as a background Task while the orchestrator writes the run summary
- Zero added latency: The analysis runs as a background {tool:Task} while the orchestrator writes the run summary
Loading
Loading