project-context
Project Context
Purpose
Keep durable repo context in ordinary files so later sessions can resume without rebuilding state.
Use / Do Not Use
Use this skill when work should leave durable repo context: resume, handoff, long-running work, reusable reference notes, a current task brief, and an append-only trail.
Do not bootstrap for read-only questions, one-shot inspections, or implicit migration of scattered legacy docs. If the layout is missing, choose explicit adoption or migration.
Core Bias
- Ordinary repo files over external systems or hidden memory.
- Current trusted topic context:
docs/reference/**. - Current task resume state:
BRIEF.md. - Append-only trail:
logs/*.md. - Small contract, portable paths, no secrets.
- When reuse is unclear, create a new dated task.
Contract
docs/
reference/**/*.md
tasks/yyyy/mm-dd/<task-slug>/
BRIEF.md
logs/{DECISIONS,WORKLOG}.md
[optional] <purpose-named-backlog>.md
[optional] working/
[optional] archive/
[optional] BACKLOG.md
docs/reference/**: current trusted reference context only. Keep principles, rules, and reliable facts here. Do not store investigation history, progress, or timeline narrative.docs/tasks/yyyy/mm-dd/<task-slug>/: default task workspace for real work.BRIEF.md: rewrite-only compact resume card, not a report or log. Keep goal, scope, current understanding/facts, current state, and nearest next step.logs/DECISIONS.mdandlogs/WORKLOG.md: append-only decision and execution trail. Keep evidence here, not in the brief.[optional] <purpose-named-backlog>.md: unresolved carry-over only, such asRESEARCH-BACKLOG.mdorQA-BACKLOG.md. Add it only when one next step is not enough.[optional] working/and[optional] archive/: temporary notes and finished remnants.[optional] docs/BACKLOG.md: not-yet-active repo-level future work only. Once active, move state into a dated task and remove the repo backlog item.
BRIEF.md Limits
Use only these top-level headings unless the user explicitly asks otherwise:
GoalorIntentScopeCurrent UnderstandingorCurrent FactsCurrent StateNext SteporNext Actions- optional
Working Boundary
Hard rules:
- Usually 300-500 words maximum.
- Each section should usually have 1-5 bullets.
Scopeis a 1-3 bullet boundary summary, not a touched-file list.Next Stepowns only the nearest restartable move, not a backlog.- Do not add sections such as
Validation,Files Changed,Touched Files,History,Worklog,Investigation,Evidence,Completed, orChecklist. - Do not include command output, validation transcripts, investigation history, completed-work history, or touched-file inventories.
- If validation status matters, summarize it in one
Current Statesentence and keep details inlogs/WORKLOG.md. - If exact paths materially lower reopen cost, put at most 5 repo-relative paths in
Working Boundary.
Log Limits
Logs are append-only, but not command transcripts.
For logs/WORKLOG.md:
- Append one block per meaningful work batch, not per command or file.
- Merge repetitive edits, retries, validation attempts, and feedback micro-iterations into one short outcome block after the cluster settles.
- Do not paste raw shell output unless the exact text is essential evidence.
- Keep evidence concise: command names, repo-relative paths, summarized results, or small nested evidence bullets when that is easier to scan.
- Record failed attempts only when they affect the next restartable step.
- Separate task validation from pre-existing repo debt or unrelated warnings.
- Prefer fewer, denser blocks over many micro-blocks.
- Use the existing task language and voice. Write natural bullets that include outcome, compact evidence, and remaining restart conditions only when they matter.
For logs/DECISIONS.md:
- Record only decisions affecting future interpretation, scope, architecture, rollback, or rule application.
- Do not log routine edits, validation passes, file creation, or obvious implementation steps.
- Keep each block as 4 bullets:
Background,Decision,Why,Impact. - When work is paused, rejected, or converted into reference-only status, record the final decision and reopen condition in
DECISIONS.mdor the compact current state inBRIEF.md.
For both logs:
- Add entries under dated sections using
**YYYY-MM-DD**. - Keep language consistent with the existing task; otherwise use the current user language.
- For log writes, resolve the skill-relative
scripts/task_logs.pypath and use itsappendentrypoints by default. If unavailable, append manually with the same block shape.
Path and Ownership Rules
- Use repo-relative paths or placeholders like
<repo-root>,<task-root>, and$CODEX_HOME; never user-specific absolute paths. - Never store secrets.
- Parent agent owns
BRIEF.mdand canonical logs. - Subagents write only temporary notes or artifacts unless explicitly assigned canonical writeback.
- Subagents start without inherited context; pass a small brief: goal, constraints, boundary notes, validation command, artifact path.
Operating Model
-
Read reusable context.
- Use
rgindocs/reference/**/*.mdfor the active topic. - Start with up to 3 narrow reference files closest to the task.
- Use
-
Check one related task.
- Read
BRIEF.mdfirst. - Open logs only if the brief still matches the same unfinished work.
- Read
-
Decide reuse or new task.
- Reuse only when unresolved work and expected output still match.
- Use boundary notes as hints, not task identity.
- Otherwise start a new dated task.
-
Ensure the task shell.
- If durable context is warranted and the repo is effectively empty, create
docs/reference/and one dated task withBRIEF.mdand logs. - For most write-bearing tasks, create or update one dated task.
- Skip task creation only for very small, low-judgment, immediately finished changes.
- If durable context is warranted and the repo is effectively empty, create
-
Write canonical surfaces.
- Rewrite
BRIEF.mdin place. - Append decisions and worklog entries.
- Move reusable current rules or facts into
docs/reference/**; keep investigation and progress in logs.
- Rewrite
-
Add optional surfaces only when needed.
- Add a task-local backlog only when one next step is not enough.
- Keep repo backlog only for inactive future work.
- Do not mirror open work across brief, backlog, working notes, and logs.
-
If context is missing, proceed with explicit assumptions and record corrections after execution.
Anti-Patterns
- Bootstrapping project-context files for read-only or one-shot work.
- Reusing a task because the topic is similar rather than the same unresolved work.
- Turning
BRIEF.mdinto append history, reusable docs, validation notes, file inventory, or rationale. - Letting
Scopebecome a touched-file list. - Letting
Current Statenarrate work sequence instead of resumable state. - Letting
Next Stepbecome a backlog. - Turning
docs/reference/**into investigation notes, progress, or timeline narrative. - Creating generic overflow files instead of purpose-named task-local docs.
- Keeping completed items in
docs/BACKLOG.md. - Mixing canonical docs, temporary notes, and finished remnants at one task root.
- Dumping raw command transcripts, repetitive micro-steps, or noisy shell output into
WORKLOG.md. - Duplicating the same benchmark numbers or validation matrix in both
BRIEF.mdandWORKLOG.mdunless the second surface adds a new interpretation. - Logging routine edits or validation passes as decisions.
- Saving absolute user-specific paths or secrets.
Guardrail Check
Run the bundled checker by resolving scripts/check_runtime_shape.py from the installed project-context skill directory and executing it from the active repo root. If running from a subdirectory, pass --repo-root <path> when nested docs trees could confuse root detection.
The checker covers runtime shape only: required files, latest log-block shape, task/reference path markers, and secret-like markers. It does not judge ownership, semantic quality, full history, merge correctness, or broader scope discipline.
Before finalizing, reject or rewrite BRIEF.md if:
- It contains forbidden sections such as validation, files changed, history, evidence, or checklist.
Scopeis functioning as a file inventory.Current Statenarrates the work sequence instead of the current resumable state.Next Stepcontains a backlog instead of one nearest action.- The brief is longer than needed to resume the task.
Final Gates
- Can a later session reopen the work from
BRIEF.mdwithout reconstructing state? - Is reusable current context in
docs/reference/**instead of task logs? - Is the execution and decision trail confined to
logs/*.md? - Are canonical docs separate from temporary notes and finished remnants?
- Did task reuse follow unresolved work and expected output rather than topic similarity?
- Are paths portable and secrets absent?