session-resume-brief
Reconstructs the current state of a software project after a break by inspecting repository guidance, Git status, recent history, changed files, roadmaps, TODOs, tests, and handoff notes. Use when the
SKILL.mdskills/project-planning/session-resume-brief/SKILL.md
GitHubSession Resume Brief
Purpose
Reconstruct enough reliable project context for a developer or agent to resume work safely after an interruption, a new session, or a period away from the repository.
The skill determines:
- what the project is trying to accomplish
- what changed recently
- what is currently in progress
- which files are modified or untracked
- what has been completed
- what remains unfinished
- which assumptions or decisions must be preserved
- whether the current state is validated
- what the safest next action should be
- which files should be opened first
The result is a compact orientation brief, not a general repository audit and not a new implementation plan.
The skill must favor evidence from the repository over guesses based on filenames, branch names, or incomplete TODO comments.
When to use this skill
Use this skill when:
- The user asks to continue work on an existing repository.
- The user says “resume this project,” “continue where we left off,” or “what was I working on?”
- A new Codex or agent session needs to recover project context.
- Work was interrupted before completion.
- The repository contains uncommitted changes whose purpose is unclear.
- The current branch appears to contain partially completed implementation work.
- The user returns to a project after several days or weeks.
- A collaborator needs a concise orientation before taking over work.
- The next task should be chosen from the actual repository state.
- The user wants to know which files to inspect before making changes.
- A repository has roadmaps, handoff notes, TODOs, or decision records that need to be reconciled with current code.
Do not use this skill when:
- The user wants a broad architectural review.
- The user asks for a full code review or release-readiness audit.
- The repository has not been started and needs initial project planning.
- The user already supplied a complete and current handoff brief.
- The task is to implement a clearly specified change immediately.
- The user asks only for a Git history summary.
- The user asks to clean, commit, reset, stash, or discard changes.
- The task requires editing files rather than reconstructing context.
- The user asks for a long-term roadmap rather than the immediate project state.
Operating constraints
- Treat the repository as read-only.
- Do not create, edit, move, delete, stage, commit, stash, reset, or restore files.
- Do not install dependencies.
- Do not run migrations.
- Do not start deployment or publishing workflows.
- Do not modify remote branches, issues, pull requests, or project boards.
- Do not assume uncommitted changes are disposable.
- Do not assume the latest commit represents the current unfinished task.
- Do not mark work complete merely because code exists.
- Separate confirmed facts from likely interpretations.
- Prefer repository-specific instructions over generic conventions.
- Inspect the minimum material necessary to establish reliable context.
- Avoid turning the resume brief into an exhaustive repository audit.
Inputs to inspect
Inspect available sources in this order, adapting to the repository.
1. Repository instructions
Look for:
AGENTS.md- nested
AGENTS.mdfiles CLAUDE.mdCODEX.md- project instruction files
.agents/- contribution guidelines
- architecture notes
- coding conventions
- repository-specific skills
Repository instructions establish:
- project purpose
- allowed workflows
- source layout
- validation commands
- important constraints
- files that should not be modified
- expected output conventions
2. Immediate Git state
Inspect:
- current branch
- working tree status
- staged files
- modified files
- deleted files
- renamed files
- untracked files
- merge or rebase state
- upstream divergence when available
Useful read-only commands may include:
git status --short --branch
git diff --stat
git diff --name-status
git diff --cached --stat
git diff --cached --name-status
git branch --show-current
git log --oneline --decorate -n 15
Use more detailed diffs only when needed to understand the unfinished task.
3. Recent project history
Inspect:
- recent commits
- recent merge commits
- commit messages
- files changed by recent commits
- recent tags or releases
- current branch origin
- branch comparison against the default branch
Possible read-only commands:
git log --oneline --decorate --graph -n 20
git show --stat --summary HEAD
git diff --stat <default-branch>...HEAD
git log <default-branch>..HEAD --oneline
Do not assume main or master is the default branch. Determine it from repository context when possible.
4. Planning and handoff material
Look for:
ROADMAP.mdTODO.mdPLAN.mdSTATUS.mdHANDOFF.mdNEXT.mdCHANGELOG.mddocs/roadmap/docs/planning/docs/decisions/- issue exports
- session notes
- implementation checklists
- milestone documents
Treat planning documents as intent, not proof that work is implemented.
5. Project metadata
Inspect relevant metadata such as:
package.json- workspace configuration
- build configuration
- test configuration
- framework configuration
- deployment configuration
- package exports
- scripts
- environment examples
- documentation entry points
Use metadata to determine:
- available validation commands
- project structure
- active packages
- expected build output
- likely development workflow
6. Changed implementation files
Inspect the current diff and directly related source files.
Determine:
- what behavior is being added or changed
- whether implementation is partial
- whether public APIs are affected
- whether tests and documentation were updated
- whether temporary debugging code remains
- whether changes align with the current plan
Do not read the entire repository unless the task genuinely requires it.
7. Tests and validation evidence
Inspect:
- tests changed with the implementation
- test configuration
- recent test output stored in notes or CI
- build status when available locally
- lint and type-check configuration
- TODOs indicating missing validation
Validation commands may be identified, but should not automatically be run unless they are clearly safe, local, and read-only in effect.
When running validation would:
- modify snapshots
- regenerate files
- update caches tracked by the repository
- write coverage artifacts
- change lockfiles
- start services
- require credentials
report the command without running it.
Evidence hierarchy
When sources disagree, use this priority order:
- Current repository instructions
- Current working tree and diff
- Current branch history
- Tests and executable project configuration
- Current roadmap or handoff notes
- README and general documentation
- TODO comments
- Filename or branch-name inference
A roadmap may say a task is pending while the code already implements it.
A TODO may be stale.
A README may describe the latest released state rather than the current branch.
The current code is strong evidence of implementation, but not proof of correctness or completion.
State classifications
Classify work using these states.
Confirmed complete
Use only when:
- implementation exists
- relevant tests or validation exist
- documentation or public API changes are addressed when required
- no clear unfinished markers remain
Implemented but unvalidated
Use when:
- the main code appears present
- validation has not been run or recorded
- tests are missing, incomplete, or unknown
In progress
Use when:
- source changes are partial
- TODOs remain within the active implementation
- related files are inconsistent
- tests or documentation indicate unfinished behavior
Planned but not started
Use when:
- the task appears only in planning material
- no meaningful implementation evidence exists
Blocked
Use when:
- progress depends on a missing decision, dependency, credential, asset, API, or external response
- the repository records a known blocker
- the current implementation cannot proceed safely
Abandoned or stale
Use cautiously when:
- the work appears old
- current plans supersede it
- the branch or files no longer align with the active architecture
- repository history clearly indicates replacement
Do not classify work as abandoned from age alone.
Unknown
Use when available evidence is insufficient or contradictory.
Workflow
1. Establish repository identity
Determine:
- repository name
- project purpose
- primary framework or language
- package or application type
- current branch
- likely default branch
- whether the repository is a monorepo
- relevant subproject or package
If the repository contains multiple applications or packages, identify which area the current changes belong to.
2. Read governing instructions
Read repository-level and relevant nested instruction files before interpreting changes.
Record:
- project-specific rules
- required validation
- naming conventions
- protected areas
- source-of-truth documents
- expected planning files
- restrictions on generated files
Do not continue based on generic assumptions when local guidance exists.
3. Capture the immediate working state
Inspect the current branch and working tree.
Record:
- clean or dirty status
- staged changes
- unstaged changes
- untracked files
- deleted or renamed files
- current merge, cherry-pick, or rebase state
- branch divergence when available
Group files by likely purpose:
- implementation
- tests
- documentation
- configuration
- generated output
- assets
- temporary files
- unknown
Do not describe every changed line in the final brief. Summarize the task represented by the changes.
4. Determine the active workstream
Use the current diff, recent commits, branch name, planning notes, and changed files to identify the main active workstream.
Describe it as an outcome:
Good:
Add cancellable upload retries and expose retry lifecycle events.
Weak:
Update upload files.
If multiple unrelated workstreams exist, list them separately and identify which appears most active.
5. Reconstruct recent progress
Inspect a representative recent history.
Determine:
- what was completed recently
- which decisions were made
- which files or APIs changed
- whether current changes build directly on recent commits
- whether a refactor or migration is underway
- whether implementation has diverged from the documented plan
Avoid producing a generic commit log.
Translate history into meaningful progress.
6. Compare plans against implementation
Cross-reference planning documents with actual code.
For each relevant task, classify it as:
- confirmed complete
- implemented but unvalidated
- in progress
- planned but not started
- blocked
- stale
- unknown
Report discrepancies such as:
- roadmap says pending, but implementation exists
- checklist says complete, but tests are missing
- README documents behavior not present in code
- code exposes an API not documented in the plan
- tests expect an older contract
- addon compatibility remains unresolved
7. Inspect the active diff
Read enough of the changed files to understand:
- the current implementation goal
- completed portions
- incomplete portions
- public contracts affected
- probable next step
- regression risk
- related files that may still need changes
Look for incomplete-work signals:
- TODO or FIXME comments
- placeholder values
- skipped tests
- focused tests such as
.only - disabled lint rules
- temporary logging
- unhandled branches
- mock implementations
- duplicated interim code
- stale comments
- incomplete docs
- missing exports
- missing test coverage
- changed types without updated consumers
Do not treat every TODO in the repository as part of the current session.
8. Determine validation status
Identify the relevant validation commands from project configuration and instructions.
Examples:
- tests
- targeted tests
- type checking
- linting
- build
- formatting checks
- package validation
- documentation build
- accessibility checks
For each relevant check, classify it as:
- passed with current evidence
- failed with current evidence
- not run
- result unknown
- unsafe to run automatically
- unavailable in the environment
Never claim a check passed because a script exists.
If validation is run, record:
- exact command
- result
- relevant failure
- whether it may have generated files
9. Identify blockers and unresolved decisions
Separate blockers from ordinary remaining work.
A blocker may include:
- unclear API contract
- missing design decision
- unavailable external service
- broken dependency
- failing prerequisite test
- missing fixture or asset
- conflicting repository instructions
- incomplete migration dependency
- unknown expected behavior
- credentials not available
For every blocker, state:
- evidence
- impact
- what is needed to unblock it
Do not invent stakeholder decisions.
10. Identify the safest next action
Recommend one primary next action.
The action should:
- continue the active workstream
- be supported by evidence
- avoid discarding or overwriting work
- reduce uncertainty
- be small enough to validate
- respect current dependencies
- avoid beginning unrelated improvements
Good next actions:
- complete the missing event-detail type before updating consumers
- add targeted tests for the changed retry state
- reconcile the current diff with the documented API contract
- run the existing targeted test command
- inspect an unresolved failing fixture
- update the addon using the changed public event name
Weak next actions:
- finish the project
- improve the code
- continue implementation
- refactor everything
- update documentation and tests
11. Identify files to open first
List no more than five files unless the repository genuinely requires more.
Prioritize:
- active implementation file
- directly related test
- public type or contract
- current plan or decision record
- relevant documentation or consumer
For each file, explain why it matters.
12. Flag actions that should not happen yet
Explicitly identify tempting but premature work, such as:
- unrelated refactoring
- dependency upgrades
- formatting the entire repository
- committing before validation
- updating release notes before the API stabilizes
- redesigning demos before behavior is complete
- regenerating snapshots before understanding failures
- discarding unknown untracked files
- modifying addons before the core contract is decided
This prevents scope drift during context recovery.
13. Produce the resume brief
Keep the result compact enough to use immediately.
The brief should answer:
- Where are we?
- What changed?
- What is unfinished?
- What is validated?
- What is blocked?
- What should happen next?
- Which files should be opened?
Do not include a complete repository inventory.
Output format
Return:
# Session Resume Brief
## Project context
- **Repository:** ...
- **Purpose:** ...
- **Stack:** ...
- **Current branch:** ...
- **Default branch:** ...
- **Working tree:** Clean | Modified | Conflict state | Unknown
- **Primary workstream:** ...
## Current state
Summarize the active repository state in three to six sentences.
Distinguish:
- confirmed facts
- likely interpretation
- unresolved uncertainty
## Recent progress
- ...
- ...
- ...
Include only progress relevant to the active workstream.
## Work in progress
| Area | State | Evidence | Remaining work |
|---|---|---|---|
| ... | In progress | ... | ... |
## Changed files
| File or group | Status | Purpose | Attention needed |
|---|---|---|---|
| ... | Modified | ... | ... |
Group related files when that improves clarity.
## Validation status
| Check | Status | Evidence or command |
|---|---|---|
| Tests | Passed / Failed / Not run / Unknown | ... |
| Type check | ... | ... |
| Lint | ... | ... |
| Build | ... | ... |
Include only relevant checks.
## Blockers and unresolved decisions
### Blocker or decision
- **Evidence:** ...
- **Impact:** ...
- **Needed next:** ...
If none are evident, state:
```txt
No confirmed blockers found.
Recommended next action
Do next: ...
Why this is next:
- ...
- ...
- ...
Completion signal:
- ...
Files to open first
path/to/file— reasonpath/to/test— reasonpath/to/contract— reason
Do not do yet
- ...
- ...
Confidence and gaps
- Confidence: High | Medium | Low
- Missing context: ...
- Assumptions: ...
Resume command
Provide a short, paste-ready instruction for the next Codex action:
Continue the current work on <specific outcome>.
Start by reading:
- <file>
- <file>
Then:
1. <small concrete action>
2. <validation action>
Preserve:
- <important constraint>
Do not:
- <premature or dangerous action>
## Resume brief length
Prefer:
- 400–900 words for a normal repository
- under 400 words for a small, clear change
- up to 1,500 words for a monorepo or conflicting project state
Do not make the user read a repository biography before they can resume work.
## Confidence rules
Use **high confidence** when:
- repository instructions are clear
- current diff has one coherent purpose
- recent history aligns with planning material
- validation status is known
Use **medium confidence** when:
- the active workstream is likely but not explicitly documented
- some validation evidence is missing
- planning material is stale
- several related tasks overlap
Use **low confidence** when:
- changed files are unrelated
- commit messages are vague
- the repository lacks guidance
- current work appears partially overwritten
- a merge or rebase state is unclear
- available evidence conflicts materially
Do not hide low confidence behind polished prose.
## Quality bar
The task is complete only when:
- Repository instructions were inspected before interpreting the project.
- The current branch and working tree state are reported.
- Uncommitted changes are treated as potentially valuable work.
- The active workstream is described as an outcome.
- Recent history is translated into progress rather than copied as a commit list.
- Planning documents are checked against actual implementation.
- Completed, in-progress, planned, blocked, and unknown work are distinguished.
- Validation claims are supported by evidence.
- The next action is concrete, narrow, and safe.
- Relevant files to open first are identified.
- Premature actions are explicitly flagged.
- Facts, interpretations, and uncertainties are separated.
- No files or repository state were modified.
- No Git write commands were run.
- The result is concise enough to act on immediately.
## Edge cases
### The working tree is clean
Do not conclude that no work is in progress.
Inspect:
- current branch commits
- branch divergence
- roadmap status
- recent handoff notes
- open implementation tasks
A clean tree only means there are no local uncommitted changes.
### The working tree contains many unrelated changes
Group changes into separate workstreams.
Identify:
- likely active task
- unrelated maintenance
- generated files
- unexplained files
- potential accidental changes
Do not recommend committing or discarding them as one unit.
### The repository is in a merge or rebase state
Report the state prominently.
Inspect:
- conflict files
- current operation
- relevant branch history
Do not resolve conflicts automatically.
The recommended next action should focus on understanding or completing the current Git operation safely.
### There are untracked files
Treat them as potentially intentional.
Inspect names and relevant content when safe.
Do not delete, ignore, or classify them as temporary without evidence.
### The branch name conflicts with the changed files
Prefer the actual diff and recent history.
Report the mismatch as a possible stale branch name.
### The roadmap conflicts with the code
Report both states.
Use implementation evidence to describe what exists, while noting that planning documentation may need reconciliation.
Do not silently “correct” either source.
### Tests exist but were not run
Report them as available but not run.
Do not write:
```txt
Tests should pass.
Tests pass but work remains incomplete
Do not classify the task as complete solely because tests pass.
Check:
- documentation
- types
- exports
- examples
- public API compatibility
- remaining TODOs
- acceptance criteria
Validation commands may modify files
Do not run them automatically.
Report:
- the command
- likely generated output
- why execution was skipped
Dependencies are missing
Do not install them.
Report which validation could not run and why.
The repository is a monorepo
Identify:
- affected workspace
- package-local instructions
- package-local scripts
- cross-package dependencies
- whether changed public contracts affect other packages
Avoid scanning every workspace unless the changes cross boundaries.
No Git history is available
Use:
- current files
- planning documents
- changelog
- modification context
- handoff notes
Lower confidence and state that recent progression cannot be reconstructed.
No planning documents exist
Infer the active workstream from the current diff and history.
Mark the interpretation clearly.
Recommend creating a handoff checkpoint later, but do not create one during this read-only task.
The latest commit is a broad formatting change
Look beyond it for the last meaningful functional changes.
Do not treat formatting churn as the primary project workstream.
The repository appears complete
Identify the latest confirmed state and whether any validation or release tasks remain.
Do not invent a next feature.
The recommended next action may be:
Confirm there is no pending work before starting a new workstream.
The project contains sensitive configuration
Do not expose:
- secrets
- tokens
- private keys
- credentials
- private endpoint details
- personal data
Report only that sensitive local configuration exists when relevant.
Related skills
workday-shutdown— creates a structured end-of-session checkpoint for later recovery.interruption-recovery— records the exact state of unfinished work during an unexpected stop.next-best-action— compares several valid tasks and selects the most valuable next task.decision-log-writer— records architectural or product decisions that must survive across sessions.context-handoff-builder— creates a handoff for another developer, agent, or team.repo-health-daily-check— performs a wider repository health inspection after context is recovered.