project-context
Seed or refresh the project's durable context layer: a single
docs/product/context.md holding the overview, the digest of raw evidence, the
source index, the glossary, the design and technical context sections, and the
Know/Don't-Know ledger. This file is what every other A-Team
skill — and every agent in the pipeline — reads instead of holding project facts.
The canonical shape is references/context-template.md (mirrored in
CONTRACT.md).
This skill is pure craft: zero project facts live in it. It is the entry
door those facts walk through.
Glossary first, always. Domain language stabilizes in the glossary before it
stabilizes anywhere else — seed it on day one even if only three terms are
known. A settled vocabulary is what keeps every downstream artifact (jobs, PRDs,
briefs, tickets) speaking the same language.
Where it writes
Repo-first-and-always. Resolve the target root in this order:
- A git repo — from an explicit target path argument, else the CWD's git
root. If a repo is satisfied, use it and move on.
- A Cowork / plain project folder — valid when no repo exists or the user
explicitly targets one. Never a blocker.
Either way the write path is the same: <target>/docs/product/context.md, with
raw evidence under <target>/docs/product/input/. Git-commit the change only
where a repo exists — one commit per run, message naming what changed and why
(e.g. docs(context): ingest 2026-07-24 client call; 3 glossary terms settled).
When to use
- A project has no context layer yet (Stage-0 setup) — seed
context.md from
whatever the human has: docs, links, a conversation.
- New evidence landed in
docs/product/input/ and needs digesting.
- Terminology has shifted, scope or framing changed, or a meeting changed
direction — the context is stale.
- Someone new (human or agent) needs "read this one file" to get productive.
When NOT to use
- Repo structure, stack selection, CI setup — out of scope entirely.
- Writing the discovery plan, PRD, or epics — this skill feeds those; route to
discovery-plan, prd-writer, epics.
- Defining or revising the project's jobs — that belongs to
jobs-to-be-done.
This skill cites finished JTBDs by id, quoting headline language exactly,
and writes Core job: TBD when none exists. It never mints or rewrites jobs.
Inputs
- Which target (ask if ambiguous — never guess between projects).
- Any existing
docs/product/context.md — a refresh preserves what's still
true and updates only what changed. Never rebuild from scratch over an
existing file.
docs/product/input/ batches not yet listed in the file's ingested:
frontmatter — these are the ingestion queue.
- Whatever the user tells you directly.
- Connectors (pull, then stage). If Notion, Granola, Slack, or the ops API
are available and hold relevant context, you may pull — but every pull is
first saved verbatim as a new clearly-labeled batch,
input/<YYYY-MM-DD>-<source>-pulled/, and then digested from there like any
human-dropped evidence. Never edit, delete, or summarize-in-place an existing
batch; digests belong in context.md. Never block on a connector or ask the
user to connect one.
Workflow
- Resolve the target (repo-first, above). Read the current
context.md
and its ingested: list; read docs/product/jtbd/ ids if present.
- Gather. Collect un-ingested
input/ batches, user input, and staged
connector pulls. Don't pad thin input into fake completeness — a short honest
file beats a long speculative one.
- Glossary first. Capture every domain term in play: settled terms with
working definitions, forming terms with the best current definition,
uncertain terms explicitly TBD. When two names compete for one concept,
record both and note which is winning. Never delete a renamed term — note
the rename so old documents stay readable.
- Digest. Per new batch: compress what the evidence actually says, with
pointers back to the raw files. The digest is written knowing how Design and
Dev will later consume it — organised, not just summarized.
- Sources. Index everything this refresh consumed — links visited,
human-provided files, connector pulls, the grill digest batch: type ·
pointer (URL or
input/ path) · date · what it informed. Every row
resolves; Overview's Key links stay the 2–3 load-bearing ones.
- Overview. What/why in one paragraph, audience, stage, goals,
constraints, key links. Jobs cited by id, headline quoted exactly.
- Ledger. Update Know / Don't-Know. Tag each Don't-Know blocking
(naming the JTBD or scope call it blocks) or non-blocking (destined for
research-plan.md as an open question). Uncertainty stays visible as TBD — a
confident-sounding guess is a landmine for every skill that reads this file.
- Design and technical context. On a first run, synthesize the design
briefing's answers (from the
intake/ design bank) into ## Design context — users & emotional goals, brand personality, aesthetic direction
with references and anti-references, accessibility, 3–5 design principles —
and the dev bank's answers into ## Technical context — stack binding,
external dependencies, infra/deploy, data sensitivity, non-functional
constraints, v0 test bar. On a refresh, preserve both sections and update only what the
human changed; dropping either is a forbidden overwrite like any other
section.
Settled facts only, in both. An uncertain or assumed fact belongs in
research-plan.md with a confidence level, a machine-readable one in the
target's ## A-Team Config. One fact, one home — never restate across
files, because both copies are durable and will eventually disagree.
- Read-back — mandatory before writing.
context.md is a durable
artifact: present the drafted file (or the diff, on a refresh) for the human
to correct in this session. Only then write, update ingested: and
updated: in the frontmatter, and commit (repo targets).
- Close with routing by project maturity:
jobs-to-be-done — core job undefined or contested, or new-job signals
surfaced in the digest.
research-synthesis — a pile of evidence needs synthesis against the
existing job set.
discovery-plan — framing still uncertain; unknowns need a plan.
prd-writer — feature-level scope is concrete enough to write.
End with: Next likely skill(s) · What to pass forward (the
context.md path + the ledger entries most worth resolving) · Suggested
next prompts (2–3, plain language).
No human present
The read-back requires a human. If invoked with nobody to answer, escalate,
never guess: write nothing durable beyond serialising your blocking questions
under ## Awaiting answers in context.md (create the file with only
frontmatter + that section if it doesn't exist), and halt with a report. The
human answers inline and re-invokes; remove the section as answers are ingested.
References
references/context-template.md — the canonical context.md shape and the
rules that bind every writer of the file.
1---2name: project-context3description: Use when a project's durable context needs to be seeded or refreshed — creating or updating docs/product/context.md (overview + digest + source index + glossary + Know/Don't-Know ledger + design context + technical context) in the target repo; when a project has no context layer yet (Stage-0 setup); when domain terminology is still forming or has drifted; after a meeting, new evidence batch, or scope change that outdates the current context. Also use to ingest new docs/product/input/ batches into the digest. Do not use for repo scaffolding or CI setup, for writing the discovery plan, PRD, or epics (use discovery-plan, prd-writer, epics), or for creating or revising Jobs to be Done — this skill records finished JTBDs by id and marks missing ones TBD; jobs-to-be-done owns minting them.4---56# project-context78Seed or refresh the project's **durable context layer**: a single9`docs/product/context.md` holding the overview, the digest of raw evidence, the10source index, the glossary, the design and technical context sections, and the11Know/Don't-Know ledger. This file is what every other A-Team12skill — and every agent in the pipeline — reads instead of holding project facts.13The canonical shape is `references/context-template.md` (mirrored in14`CONTRACT.md`).1516This skill is **pure craft**: zero project facts live in it. It is the entry17door those facts walk through.1819**Glossary first, always.** Domain language stabilizes in the glossary before it20stabilizes anywhere else — seed it on day one even if only three terms are21known. A settled vocabulary is what keeps every downstream artifact (jobs, PRDs,22briefs, tickets) speaking the same language.2324## Where it writes2526**Repo-first-and-always.** Resolve the target root in this order:27281. A **git repo** — from an explicit target path argument, else the CWD's git29 root. If a repo is satisfied, use it and move on.302. A **Cowork / plain project folder** — valid when no repo exists or the user31 explicitly targets one. Never a blocker.3233Either way the write path is the same: `<target>/docs/product/context.md`, with34raw evidence under `<target>/docs/product/input/`. Git-commit the change only35where a repo exists — one commit per run, message naming what changed and why36(e.g. `docs(context): ingest 2026-07-24 client call; 3 glossary terms settled`).3738## When to use3940- A project has no context layer yet (Stage-0 setup) — seed `context.md` from41 whatever the human has: docs, links, a conversation.42- New evidence landed in `docs/product/input/` and needs digesting.43- Terminology has shifted, scope or framing changed, or a meeting changed44 direction — the context is stale.45- Someone new (human or agent) needs "read this one file" to get productive.4647## When NOT to use4849- Repo structure, stack selection, CI setup — out of scope entirely.50- Writing the discovery plan, PRD, or epics — this skill feeds those; route to51 `discovery-plan`, `prd-writer`, `epics`.52- Defining or revising the project's jobs — that belongs to `jobs-to-be-done`.53 This skill cites finished JTBDs **by id, quoting headline language exactly**,54 and writes `Core job: TBD` when none exists. It never mints or rewrites jobs.5556## Inputs5758- Which target (ask if ambiguous — never guess between projects).59- Any existing `docs/product/context.md` — a refresh preserves what's still60 true and updates only what changed. **Never rebuild from scratch over an61 existing file.**62- `docs/product/input/` batches not yet listed in the file's `ingested:`63 frontmatter — these are the ingestion queue.64- Whatever the user tells you directly.65- **Connectors (pull, then stage).** If Notion, Granola, Slack, or the ops API66 are available and hold relevant context, you may pull — but every pull is67 first saved **verbatim** as a new clearly-labeled batch,68 `input/<YYYY-MM-DD>-<source>-pulled/`, and then digested from there like any69 human-dropped evidence. Never edit, delete, or summarize-in-place an existing70 batch; digests belong in `context.md`. Never block on a connector or ask the71 user to connect one.7273## Workflow74751. **Resolve the target** (repo-first, above). Read the current `context.md`76 and its `ingested:` list; read `docs/product/jtbd/` ids if present.772. **Gather.** Collect un-ingested `input/` batches, user input, and staged78 connector pulls. Don't pad thin input into fake completeness — a short honest79 file beats a long speculative one.803. **Glossary first.** Capture every domain term in play: settled terms with81 working definitions, forming terms with the best current definition,82 uncertain terms explicitly TBD. When two names compete for one concept,83 record both and note which is winning. Never delete a renamed term — note84 the rename so old documents stay readable.854. **Digest.** Per new batch: compress what the evidence actually says, with86 pointers back to the raw files. The digest is written knowing how Design and87 Dev will later consume it — organised, not just summarized.885. **Sources.** Index everything this refresh consumed — links visited,89 human-provided files, connector pulls, the grill digest batch: type ·90 pointer (URL or `input/` path) · date · what it informed. Every row91 resolves; Overview's Key links stay the 2–3 load-bearing ones.926. **Overview.** What/why in one paragraph, audience, stage, goals,93 constraints, key links. Jobs cited by id, headline quoted exactly.947. **Ledger.** Update Know / Don't-Know. Tag each Don't-Know **blocking**95 (naming the JTBD or scope call it blocks) or **non-blocking** (destined for96 `research-plan.md` as an open question). Uncertainty stays visible as TBD — a97 confident-sounding guess is a landmine for every skill that reads this file.988. **Design and technical context.** On a first run, synthesize the design99 briefing's answers (from the `intake/` design bank) into `## Design100 context` — users & emotional goals, brand personality, aesthetic direction101 with references and anti-references, accessibility, 3–5 design principles —102 and the dev bank's answers into `## Technical context` — stack binding,103 external dependencies, infra/deploy, data sensitivity, non-functional104 constraints, v0 test bar. On a refresh, preserve both sections and update only what the105 human changed; dropping either is a forbidden overwrite like any other106 section.107 **Settled facts only, in both.** An uncertain or assumed fact belongs in108 `research-plan.md` with a confidence level, a machine-readable one in the109 target's `## A-Team Config`. One fact, one home — never restate across110 files, because both copies are durable and will eventually disagree.1119. **Read-back — mandatory before writing.** `context.md` is a durable112 artifact: present the drafted file (or the diff, on a refresh) for the human113 to correct in this session. Only then write, update `ingested:` and114 `updated:` in the frontmatter, and commit (repo targets).11510. **Close with routing** by project maturity:116 - `jobs-to-be-done` — core job undefined or contested, or new-job signals117 surfaced in the digest.118 - `research-synthesis` — a pile of evidence needs synthesis against the119 existing job set.120 - `discovery-plan` — framing still uncertain; unknowns need a plan.121 - `prd-writer` — feature-level scope is concrete enough to write.122123 End with: **Next likely skill(s)** · **What to pass forward** (the124 `context.md` path + the ledger entries most worth resolving) · **Suggested125 next prompts** (2–3, plain language).126127## No human present128129The read-back requires a human. If invoked with nobody to answer, **escalate,130never guess**: write nothing durable beyond serialising your blocking questions131under `## Awaiting answers` in `context.md` (create the file with only132frontmatter + that section if it doesn't exist), and halt with a report. The133human answers inline and re-invokes; remove the section as answers are ingested.134135## References136137- `references/context-template.md` — the canonical `context.md` shape and the138 rules that bind every writer of the file.