agentsclimarketplace

Subagent output templating

Skill QBall-Inc/the-bulwark/skills/subagent-output-templating

Template for structured sub-agent output including YAML log format, task completion reports (WHY/WHAT/TRADE-OFFS/RISKS), and summary constraints. Use when defining how sub-agents should report results.From its SKILL.md

Install
npx -y skills add QBall-Inc/the-bulwark --skill subagent-output-templating

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

10.5 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

Sub-Agent Output Templating

Overview

This skill provides standardized templates for sub-agent OUTPUT formatting. It complements subagent-prompting (P0.1) which defines INPUT structure:

SkillPurpose
subagent-promptingHow to prompt sub-agents (GOAL/CONSTRAINTS/CONTEXT/OUTPUT)
subagent-output-templatingHow sub-agents report results (logs, summaries, diagnostics)

Use this skill when:

  • Defining output requirements for sub-agent invocations
  • Parsing sub-agent results in pipeline stages
  • Ensuring consistent log formats across all agents

Log File Format

File Location

logs/{agent-name}-{YYYYMMDD-HHMMSS}.yaml

Example: logs/bulwark-code-auditor-20260111-143022.yaml

YAML Schema

# Required: Metadata block
metadata:
  agent: {agent-name}           # e.g., bulwark-code-auditor
  timestamp: {ISO-8601}         # e.g., 2026-01-11T14:30:22Z
  model: {model-used}           # sonnet, haiku, or opus
  task_id: {unique-identifier}  # For tracking across pipeline stages
  duration_ms: {execution-time} # Execution duration in milliseconds

# Required: Goal from the prompt (for traceability)
goal: "{GOAL from 4-part prompt}"

# Required: Completion report
completion:
  why:
    problem: "{What was broken/missing}"
    root_cause: "{Why it happened}"
    solution: "{What was implemented}"

  what:
    - file: {path}
      lines: "{range}"
      change: "{description}"

  trade_offs:
    gained:
      - "{benefit 1}"
    cost:
      - "{drawback 1}"

  risks:
    - risk: "{description}"
      mitigation: "{how addressed}"
      severity: {low|medium|high|critical}

  next_steps:
    - "{action item 1}"

# Required for code-writing agents (omit for read-only agents):
# Pipeline suggestions from implementer-quality.sh output
pipeline_suggestions:
  - pipeline: "{recommended pipeline name}"
    target_files:
      - "{file path}"
    reason: "{why this pipeline is recommended}"

# Required: Summary for main thread (100-300 tokens)
summary: |
  {Concise summary for main thread consumption}

# Required: Diagnostic output
diagnostics:
  model_requested: {model}
  model_actual: {model}
  context_type: {main|forked}
  parent_vars_accessible: {true|false}
  hooks_fired:
    - {hook-name}
  execution_time_ms: {duration}
  completion_status: {success|error|timeout}

Task Completion Report (WHY/WHAT/TRADE-OFFS/RISKS)

Every sub-agent MUST conclude with this structured report. This enables explicit decision documentation rather than implicit code changes.

WHY Section

Document the problem and solution rationale.

why:
  problem: "Authentication bypass vulnerability in refresh token path"
  root_cause: "Token validation skips expiry check on refresh"
  solution: "Added isExpired() check to refresh token handler"

Guidelines:

  • problem: What was broken, missing, or needs improvement
  • root_cause: The underlying reason (not just symptoms)
  • solution: What was done to address it

WHAT Section

List all changes made with file locations.

what:
  - file: src/auth/token.ts
    lines: "45-52"
    change: "Added isExpired() check before token refresh"
  - file: src/auth/token.test.ts
    lines: "120-145"
    change: "Added test for expired refresh token rejection"

Guidelines:

  • One entry per file modified
  • Include line ranges for precise location
  • Describe the change, not the code

TRADE-OFFS Section

Acknowledge explicit compromises made.

trade_offs:
  gained:
    - "Security: Expired tokens now properly rejected"
    - "Compliance: Meets OWASP session management requirements"
  cost:
    - "Performance: Additional DB lookup on refresh (negligible)"
    - "Complexity: New error handling path for expired tokens"

Guidelines:

  • Be honest about costs
  • Quantify impact where possible
  • Include both technical and business trade-offs

RISKS Section

Document forward-looking concerns.

risks:
  - risk: "Existing sessions with expired refresh tokens will fail"
    mitigation: "Grace period of 24h for migration"
    severity: medium
  - risk: "Grace period could be exploited"
    mitigation: "Monitor for unusual refresh patterns"
    severity: low

Severity Levels:

LevelDefinition
lowUnlikely or minor impact
mediumPossible impact, manageable
highLikely impact, needs attention
criticalMust be addressed before deployment

NEXT STEPS Section

List follow-up actions for pipeline or human.

next_steps:
  - "Monitor refresh failure rate for 24h"
  - "Remove grace period after migration window"
  - "Update documentation for new error codes"

Guidelines:

  • Actionable items only
  • Include owner if known (e.g., "DevOps: Update monitoring dashboard")
  • Order by priority

Summary Format for Main Thread

Purpose

The summary is returned to the main thread for pipeline decision-making. It should enable the orchestrator to:

  1. Understand key findings without reading full log
  2. Decide next pipeline stage
  3. Report status to user

Token Budget

ComplexityTarget TokensUse Case
Simple100-150Single finding, clear action
Moderate150-250Multiple findings, some nuance
Complex250-300Many findings, trade-off decisions

Summary Template

Found [N] [severity] issue(s): [brief description].
[Action taken / recommendation].
[Key risk or follow-up if any].

Examples

Simple (120 tokens):

Found 1 critical vulnerability: refresh tokens not validated for expiry.
Fixed by adding isExpired() check in token.ts:45-52. Added regression test.
Risk: existing sessions may fail during 24h migration window.

Moderate (200 tokens):

Found 3 issues in authentication module:
- 1 critical: token expiry bypass (fixed)
- 1 medium: weak password hashing (fixed, migration needed)
- 1 low: verbose error messages (fixed)

All issues addressed with tests added. Migration script created for password re-hashing.
Next: run migration in staging, monitor for 48h before production.

What to Include

  • Finding count and severity
  • Actions taken
  • Key risks or blockers
  • Recommended next steps

What to Exclude

  • Full reasoning or analysis
  • Code snippets
  • Verbose explanations
  • Duplicate information from log

Pipeline Suggestions in Summary (Code-Writing Agents)

Code-writing agents (e.g., bulwark-implementer) that invoke implementer-quality.sh and receive pipeline suggestions MUST include them in the summary with MANDATORY language. This ensures the orchestrator sees and acts on them per SA6.

MANDATORY FOLLOW-UP (SA6): Run the following pipeline(s):
  - {pipeline} on {target_files} ({reason})
Orchestrator MUST evaluate each suggestion and either execute or document deferral per SA6.

Read-only agents (reviewers, auditors) omit this section.


Diagnostic Output

Purpose

Enable automated behavioral testing without mocking. Diagnostics verify:

  • Correct model was used
  • Context isolation worked (for context: fork agents)
  • Hooks fired as expected
  • Execution completed successfully

Location

logs/diagnostics/{agent-name}-{YYYYMMDD-HHMMSS}.yaml

Format

skill: subagent-output-templating
timestamp: 2026-01-11T14:30:22Z
diagnostics:
  model_requested: sonnet
  model_actual: sonnet
  context_type: forked      # main or forked
  parent_vars_accessible: false  # Should be false for forked
  hooks_fired:
    - Stop
  execution_time_ms: 4520
  completion_status: success  # success, error, timeout
notes: "Task completed successfully"

Diagnostic Fields

FieldPurposeValues
model_requestedModel specified in prompthaiku, sonnet, opus
model_actualModel that actually ranhaiku, sonnet, opus
context_typeExecution contextmain, forked
parent_vars_accessibleContext isolation testtrue, false
hooks_firedLifecycle hooks that executedArray of hook names
execution_time_msDurationInteger
completion_statusFinal statussuccess, error, timeout

Quick Reference

Minimal Log Template

metadata:
  agent: {name}
  timestamp: {ISO-8601}
  model: sonnet
  task_id: "{id}"
  duration_ms: 0

goal: "{goal}"

completion:
  why:
    problem: "{problem}"
    root_cause: "{cause}"
    solution: "{solution}"
  what:
    - file: {path}
      lines: "{range}"
      change: "{description}"
  trade_offs:
    gained: ["{benefit}"]
    cost: ["{cost}"]
  risks:
    - risk: "{risk}"
      mitigation: "{mitigation}"
      severity: medium
  next_steps:
    - "{action}"

# Include for code-writing agents only (omit for read-only agents):
pipeline_suggestions:
  - pipeline: "{pipeline name}"
    target_files: ["{path}"]
    reason: "{reason}"

summary: |
  {100-300 token summary}

diagnostics:
  model_requested: sonnet
  model_actual: sonnet
  context_type: forked
  parent_vars_accessible: false
  hooks_fired: []
  execution_time_ms: 0
  completion_status: success

Summary Checklist

[ ] Count and severity of findings stated
[ ] Actions taken described
[ ] Key risks mentioned
[ ] Next steps listed
[ ] Under 300 tokens
[ ] Pipeline suggestions with MANDATORY language (code-writing agents only)

Output Location Checklist

[ ] Main log: logs/{agent}-{YYYYMMDD-HHMMSS}.yaml
[ ] Diagnostics: logs/diagnostics/{agent}-{YYYYMMDD-HHMMSS}.yaml

Timestamp Formats

ContextPlaceholderFormatExample
File paths{YYYYMMDD-HHMMSS}Compact, filesystem-safe20260119-143022
YAML fields{ISO-8601}Standard ISO format2026-01-19T14:30:22Z

Why two formats?

  • File names: No colons (filesystem-safe on Windows), compact, lexically sortable
  • YAML fields: Standard ISO-8601 for parsing and interoperability

Important: Always use {YYYYMMDD-HHMMSS} in file paths, never {timestamp} or {ts}.


Related Skills

  • subagent-prompting (P0.1): Defines INPUT structure (GOAL/CONSTRAINTS/CONTEXT/OUTPUT)
  • pipeline-templates (P0.3): Pre-defined workflows that consume this output format

References

For extended examples and edge cases, see references/examples.md.

What ships with it: 1 file

12.6 KB alongside SKILL.md

references/

Gives 0 of the 12 instructions most context ai engineering skills give in ~2.6k tokens

Counted across 1,193 of the 1,976 authors here whose files we hold, read 2026-08-07

  • Dispatch a fresh implementer subagent per taskin 48 of 1193, across 19 files
  • Dispatch a final code reviewer after all tasksin 33 of 1193, across 8 files
  • Provide full task text to the subagentin 30 of 1193, across 9 files
  • Review spec compliance before code qualityin 27 of 1193, across 10 files
  • Make the hook script executablein 26 of 1193, across 8 files
  • Re-snapshot after navigation or DOM changesin 25 of 1193, across 19 files
  • Read files before editing themin 22 of 1193, across 11 files
  • Answer subagent questions before proceedingin 22 of 1193, across 7 files
  • Mark task complete in TodoWrite after approvalin 22 of 1193, across 6 files
  • Merge hook into existing settingsin 21 of 1193, across 3 files
  • Ask if installation is global or projectin 20 of 1193, across 2 files
  • Copy the hook script to target locationin 20 of 1193, across 2 files

Said here and by no other author read

  • write logs as YAML
  • include metadata, goal, completion, summary, and diagnostics blocks
  • conclude the report with structured WHY, WHAT, TRADE-OFFS, RISKS, and NEXT STEPS
  • include one entry per file modified
  • include line ranges for modified files
  • quantify trade-off impacts where possible

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,422. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.