artifact-template
Shared body skeleton for every KAIROS phase artifact — the mandatory Summary head block that makes a gate readable in seconds, and the fixed column sets for…
Skill by diego81b
Chalk Labs
Need help deploying artifact-template?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/diego81b-artifact-template
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/artifact-template
What's inside
- Skill name
artifact-template- Description
- Shared body skeleton for every KAIROS phase artifact — the mandatory Summary head block that makes a gate readable in seconds, and the fixed column sets for any table the orchestrator's Risk Disposition Loop parses. Invoked by every agent that writes a .kairos/ phase artifact.
- License
- AGPL-3.0
- Instructions
- 128 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: missing
- files: referenced but missing: scripts/usage.mjs
Files (1)
- SKILL.md
SKILL.md (first lines)
# Artifact Template Shared reference for `context-extractor-agent`, `impact-assessment-agent`, `bug-triage-agent`, `pm-agent`, `architect-agent`, `implementer-tdd-agent`, `implementer-coder-agent`, `implementer-lead-agent`, `code-reviewer-agent`, `security-reviewer-agent`, `test-verifier-agent`, `qa-plan-agent`, `release-planner-agent`, `documentation-agent`, `retrospective-agent`, `improvement-advisor-agent`, and `dependency-audit-agent`. Every phase artifact has two readers with opposite needs. The human at the HITL gate wants to know in ten seconds what happened and whether to approve. The next agent needs the full data model, the complete API contracts, the whole issues table as prompt input. Cutting detail to serve the first reader breaks the second one. This skill layers instead: a fixed head block that answers the gate, and everything else below it, unchanged. It governs four things only — the head block, the column sets of Disposition tables, the Ledger Update block a reviewer returns instead of writing the ledger in a review wave (§5), and how a row is worded when a person has to answer it (§6). Each agent's own Output Format section stays the source of truth for its frontmatter and for every detail section it emits. ## 1. The Summary block Every artifact body opens with `## Summary` as its first section — after the `# <Title>` heading where the phase uses one, immediately after the frontmatter where it doesn't — and nothing else comes before the phase's own sections. Five bold labels, in this order, one line each, always all five present: ```markdown ## Summary **What:** <what this phase produced, one line> **Decision:** <the one choice this phase made, or `none — analysis only`> **Needs your attention:** <row IDs of every critical/high row, or `nothing above medium`> **Open:** <ledger IDs of the questions this phase leaves open, or `none`> **Next:** <next agent, or `end of pipeline`, or `stop — <reason>`> ``` Rules: - **Seven lines maximum**, heading included. This block is what the orchestrator prints at the gate (HITL step 3), which is capped at ~7 lines. A block that runs long defeats its own purpose. - **`Needs your attention` carries row IDs, never restated descriptions** — `R1, R3 — see Risks` or `F2 — see Findings`. The Risk Disposition Loop edits those rows after this file is written; a restated description drifts out of sync the moment it does, and a reader who wants the detail is one scroll away. Cap at three IDs, then `and N more`. Write `nothing above medium` when no row is `critical` or `high`, or `none` when the phase has no Impact-rated table at all — never leave the line out. - **`Open` carries `ledger/open-questions.md` row IDs**, never restated questions and never IDs invented locally — `Q3, Q7 — see ledger`. That file is the authoritative list; a question this phase raised has a row there before this line names it. Cap at three IDs, then `and N more`. Write `none` when this phase left nothing open — never leave the line out. (`impact-assessment-agent` is the one exception: it runs before the ledger exists and names its own `## Open Questions` table's IDs instead.) - **An open point written in prose but not in `open-questions.md` does not exist.** This is the rule that makes the line above honest. A question raised in a paragraph of the body, and nowhere else, is invisible to every later phase, to the orchestrator's end-of-run ledger audit, and to `_tracking.md` — it reaches nobody. Before writing the Summary, check that every unresolved question the body raises has a ledger row; raise the row if it doesn't, then name it here. - **`Decision` is the phase's own choice**, not a summary of the work: the selected architecture option, the effort classification, the pass/fail verdict, the chosen deployment strategy. Phases that only observe (`context-extractor`, `retrospective`) write `none — analysis only`. - **`Next` is the only place the successor is named.** Name the agent that runs after this one; when the phase is terminal (`release-planner`, `documentation`), write `end of pipeline`; when the phase's own `status` blocks advancement, write `stop — <one-clause reason>`. No frontmatter field duplicates it — the orchestrator derives the next phase from which artifacts exist, not from a field the artifact declares about itself. - Write the block **last**, after the body is complete and the tallies are final — it describes what the artifact actually says, not what you set out to write. - **A cumulative artifact gets a cumulative Summary.** `03-implementation.md` is rewritten by every wave, loop iteration and re-run, and each rewrite carries the rest of the file forward — so the Summary must too. It describes the feature's state across every pass, with the current pass named at the end of `What`, never only the pass that happens to write it last: the orchestrator prints it verbatim at the gate, and a per-pass Summary on a cumulative file tells the human only what the last wave did. ## 2. Disposition table columns Any table the orchestrator's Risk Disposition Loop walks row by row must carry exactly one of the column sets below, spelled exactly as written. The loop reads these tables by their `Disposition` column, wherever they sit in the body — this skill fixes the columns, not the position. Keep each table where its own agent's Output Format puts it. **Standard (five columns)** — Risks, Issues, Findings, Contract Drift, Documentation Gaps, Flagged Conflicts: ```markdown | ID | Description | Impact | Mitigation/Fix | Disposition | ``` The fourth column is `Mitigation/Fix` in every phase, whatever the table is named. `Mitigation` alone and `Fix` alone are not variants of it — the orchestrator's Constraint & Decision Conflict Scan appends rows written against this exact header, and a table that spells it differently ends up internally inconsistent the first time that scan fires. **Extended (seven columns)** — `test-verifier-agent` only: ```markdown | ID | Category | File:Line | Description | Impact | Mitigation/Fix | Disposition | ``` Leading columns before `Description` are the extension point. The last three columns stay `Impact | Mitigation/Fix | Disposition`, in that order, in every variant. **Secondary (four columns)** — `impact-assessment-agent`'s Open Questions: ```markdown | ID | Description | Why it matters | Disposition | ``` In all three shapes: leave every `Disposition` cell empty in your own output. The orchestrator's Risk Disposition Loop fills it from the human's per-row choice; when running standalone, the human does at the gate. **Row overflow.** When a row's reasoning doesn't fit one line, keep a one-line `Description` ending in a "see below" pointer and add a short prose paragraph immediately under the table for that row. The table itself always keeps its own column count — the loop parses it either way, and the paragraph is what the loop's on-demand explain trigger reads from. ## 3. Detail sections Everything after the Summary block is the phase's own. Section names, order, and depth come from that agent's Output Format section and are not constrained here. This skill adds a head, it does not reshape the body. ## 4. Exemptions | Artifact | Exempt from | Why | |----------|-------------|-----| | `_tracking.md` (orchestrator-written; `_recap.md` in folders from before v8.5.0) | §1 Summary | It is already a whole-pipeline summary, built from every artifact's own Summary; a summary of a summary adds nothing. | | `retrospective-agent`'s Friction Points table | §2 columns | It has no `Disposition` column — nothing downstream reads it; it is the evidence trail for the lessons below it. | | `improvement-advisor-agent`'s ADR files | §1 Summary | ADRs are a fixed external format (Status/Context/Decision/Consequences), not a phase artifact behind a gate. Its `_improvement-advisory.md` is not exempt. | | `implementer-lead-agent`'s `03-contracts.md` and `03-verify.md`, and each layer agent's `03-layer-<layer>.md` (Layered Mode) | §1 Summary | Supporting artifacts, not gated phase outputs: `03-contracts.md` is the lead's contracts, `03-layer-<layer>.md` is one layer agent's report and `03-verify.md` is the lead's verification result. The gate is on `03-implementation-plan.md` (whose own Summary covers the contracts) and later on `03-implementation.md`. | | `documentation-agent`'s `_project-summary.md` draft (`step: summary`) | §1 Summary, §2 columns | It is the text of a document the project keeps, written for a reader outside the pipeline: the gate shows its path, and a KAIROS head block would end up in the project's own files. No Disposition column either, because the gate is the whole-artifact one. | | `context-extractor-agent`'s Prompt Template section | §1 Summary | Only the artifact body opens with Summary — the prompt block inside it is copy-paste input for another agent, not a section of this document. | | `bug-triage-agent`'s Evidence table | §2 columns | It is the proof trail behind the root cause, not a set of findings for a gate to resolve. | | `_usage.md` (orchestrator-written) | §1 Summary, §2 columns | Generated by `scripts/usage.mjs` from the session transcripts after every agent call, never by an agent (an agent cannot know its own token count while it runs). A measurement table for the human, not a gated phase output. | | `qa-plan-agent`'s tables other than `## Risks` (Coverage Complement, Manual Test Cases, Expected Behaviour Changes, Exploratory Charters, Existing Manual Cases to Re-run, Test Data & Environment, UAT Sign-off) | §2 columns | They are a plan for a human to execute, not findings for a gate to resolve. `## Risks` is the artifact's one Disposition table and uses the standard five columns. | | `qa-plan-agent`'s `_qa-regression.md` catalogue | §1 Summary, §2 columns | A project-wide catalogue a human draws from across features, not a gated phase output — no Disposition column, and the Loop never runs against it. | | `dependency-audit-agent`'s tables (Vulnerabilities, Version Currency, Licenses, Debt Hotspots, Backlog) | §2 columns | A standing backlog a human draws from over time, not a gate resolved in one sitting — no Disposition column anywhere, and the Loop never runs against `_tech-debt.md`. | ## 5. Ledger Update block (review wave) Outside a review wave an agent updates the three ledger files itself. In a review wave (`review_wave: true` in the invocation prompt) two or three reviewers run at the same moment, and two agents that read a ledger row and write it back in the same minute overwrite one another, each allocating the next `C`, `D` or `Q` id from the same snapshot. So in a wave `code-reviewer-agent`, `test-verifier-agent` and `security-reviewer-agent` **do not write `ledger/constraints.md`, `ledger/decisions.md` or `ledger/open-questions.md` at all**. Each ends its artifact with the block below, and the orchestrator applies it in its Step 4.2. What goes into the block is decided by the agent's own Ledger Update section, unchanged; only where the result is written changes. ```markdown ## Ledger Update **constraints** | Row | Constraint | Category | Status | Note | |-----|------------|----------|--------|------| | C3 | — | — | 🔴 open | re-opened: `src/pay.ts:88` ignores the cap | | new | Every error response carries `request_id` | OTHER | 🔴 open | found at review | **decisions** | Row | Decision | Rationale | Constraint impact | |-----|----------|-----------|-------------------| | new | Reject inline SQL in handlers | the repository layer owns queries | C5 | **open-questions** | Row | Question | Status | Answer | |-----|----------|--------|--------| | Q2 | — | answered | confirmed by `src/export.ts:12` | | new | Is the cap per key or per row? | open | — | ``` Rules: - **`Row` names an existing row (`C3`, `Q2`) or says `new`.** You never write an id for a new row: the orchestrator allocates it, one block after another, so two blocks cannot collide. - **For an existing row only `Status` and `Note` carry a value**; `Constraint` and `Category` are `—`, because a `Category` is set once by whoever created the row and never rewritten. A `new` constraint carries a `Category` from [`constraint-taxonomy`](../constraint-taxonomy/SKILL.md)'s closed vocabulary, chosen by its Writer Rule. `decisions` rows are always `new`, and the `Supersedes` column is never yours: the orchestrator writes `—`. - **Three tables, always present.** A table with nothing to say holds one row, `none`. In Lean Mode (`effort: simple_fix`) write `none` in all three unless this pass found something worth recording. - **A row you did not act on stays out**, exactly as it stays untouched outside a wave. - **The block is replaced whole on every re-dispatch** (a loop iteration, a recheck wave), because it is part of the artifact. Do not list a `new` row the ledger already holds: you read the ledger before you start, and the orchestrator also drops a `new` row whose text matches an existing one. ## 6. Rows a person answers A `Description` or a `Question` in a Disposition table, an `open-questions.md` row and a `Q` row in an Open Questions table all end up in front of a person at a gate, usually through one `AskUserQuestion` with that text as its question and nothing else on screen. The person has not read your artifact. Write each such row so that someone holding only that line can answer it. - **Open with what is undecided, in product or code words.** Name the concrete thing: the file, screen, endpoint, table or flow. `Should the export cap count rows or keys?` can be answered cold; `Which unit for the limit (see D4)?` cannot.
From diego81b/kairos-agents-framework, AGPL-3.0.
More from diego81b/kairos-agents-framework
- 0.591score
coding-discipline
diego81b
Engineering-discipline checklist for writing new code — scope control, anti-overengineering, assumption surfacing, and verifiable success criteria.
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
issue-tracker-comment
diego81b
Shared jira/glab/bitbucket comment-posting commands for the optional "post this phase's output to the issue tracker" step every phase agent offers…
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
code-simplification
diego81b
Refactoring checklist for simplifying code without changing behavior.
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
artifact-bookkeeping
diego81b
Deterministic bookkeeping rules for phase artifacts — tallying Risk/Issue/Finding tables by Impact and deriving each phase's pass/fail status from those counts.
SkillAFreshness: A★ 2Claude Code +9 - 0.553score
constraint-taxonomy
diego81b
Closed vocabulary for the ledger's constraint Category column, plus the reader, writer, and gating rules that let a review section run only when its…
SkillBFreshness: B★ 2Claude Code +9 - 0.553score
analysis-discipline
diego81b
Engineering-discipline checklist for analysis and review work — evidence-backed findings, restraint on low-value nitpicks, scope-bounded investigation, and…
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
migration-safety
diego81b
Safety checklist for schema and data migrations.
SkillBFreshness: B★ 2Claude Code +9 - 0.550score
threat-model
diego81b
Design-time threat modelling checklist.
SkillBFreshness: B★ 2Claude Code +9 - 0.545score
agent-contract
diego81b
Shared missing-input error format used by every phase agent's own Input Validation section, parameterized by the agent's own name.
SkillBFreshness: B★ 2Claude Code +9 - 0.500score
contract-checklist
diego81b
Pre-implementation checklist for API and database contracts.
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 16, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- AGPL-3.0
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from diego81b
- 0.591score
coding-discipline
diego81b
Engineering-discipline checklist for writing new code — scope control, anti-overengineering, assumption surfacing, and verifiable success criteria.
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
issue-tracker-comment
diego81b
Shared jira/glab/bitbucket comment-posting commands for the optional "post this phase's output to the issue tracker" step every phase agent offers…
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
code-simplification
diego81b
Refactoring checklist for simplifying code without changing behavior.
SkillAFreshness: A★ 2Claude Code +9 - 0.591score
artifact-bookkeeping
diego81b
Deterministic bookkeeping rules for phase artifacts — tallying Risk/Issue/Finding tables by Impact and deriving each phase's pass/fail status from those counts.
SkillAFreshness: A★ 2Claude Code +9 - 0.553score
constraint-taxonomy
diego81b
Closed vocabulary for the ledger's constraint Category column, plus the reader, writer, and gating rules that let a review section run only when its…
SkillBFreshness: B★ 2Claude Code +9 - 0.553score
analysis-discipline
diego81b
Engineering-discipline checklist for analysis and review work — evidence-backed findings, restraint on low-value nitpicks, scope-bounded investigation, and…
SkillBFreshness: B★ 2Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get artifact-template running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
artifact-template skill. Agent Mart. https://agentmart.dev/skills/diego81b-artifact-template (last updated 2026-10-24)