Feature Session
Persistent session memory tied to an Asana task ID. One file per feature. Safe to commit. Never contains credential values — Key Vault names and DB schema references only.
File format
Files are named SESSION_GC-{id}.md and live at the repo root.
# SESSION_GC-{id}
**Asana task:** GC-{id}
**Status:** IN PROGRESS | CLOSED
**Last updated:** YYYY-MM-DD HH:MM
## What this feature does
[One paragraph — what is being built and why]
## Decisions locked
- [Decision 1]
- [Decision 2]
## What has been done
- [Completed step 1]
- [Completed step 2]
## What is pending
- [Next step 1]
- [Next step 2]
## Blockers
- [Blocker if any, or "None"]
## Key references
- Files touched: [list]
- DB tables/schemas: [list — names only, no values]
- Key Vault secret names: [list — names only, no values]
- Confluence pages: [links if relevant]
Commands
START — start session GC-123
Triggered by: "start session GC-123", "open session for GC-123", "new session GC-123"
- Check if
SESSION_GC-123.mdalready exists at repo root - If it exists, load it and tell the user — do not overwrite
- If it does not exist, ask the user:
- What is this feature building?
- Any decisions already locked?
- Create the file with all sections populated from the answer
- Confirm: "Session GC-123 started. File at SESSION_GC-123.md"
UPDATE — update session GC-123
Triggered by: "update session GC-123", "save session GC-123", at natural pause points during complex work when significant progress has been made.
ID is required. If the user says "update session" without an ID and multiple session files exist, ask which one. If only one exists, use it.
- Read the current
SESSION_GC-123.md - Based on what has happened in the conversation since the last update:
- Move completed items from "pending" to "done"
- Add new pending steps if identified
- Add any new decisions locked
- Update blockers
- Update "last updated" timestamp
- Write the updated file
- Confirm: "Session GC-123 updated."
Do not ask the user to narrate what changed — infer it from the conversation.
CLOSE — close session GC-123
Triggered by: "close session GC-123", "finish session GC-123", "done with GC-123"
- Read the current
SESSION_GC-123.md - Set status to CLOSED
- Fill in "What has been done" completely
- Clear "What is pending" — if there are unresolved items, move them to a "Residual / carry-forward" section
- Clear "Blockers" or mark as resolved
- Write the final file
- Confirm: "Session GC-123 closed. FILE: SESSION_GC-123.md"
SHOW — show session GC-123
Triggered by: "show session GC-123", "what's in session GC-123", "load session GC-123"
- Read
SESSION_GC-123.md - Print the full contents in chat
- No edits
LIST — list sessions
Triggered by: "list sessions", "what sessions are open", "show all sessions"
- Scan repo root for all files matching
SESSION_GC-*.md - For each file, read the Status and Last updated fields
- Output a table:
ID Status Last updated
GC-123 IN PROGRESS 2026-05-10 14:30
GC-115 CLOSED 2026-04-22 09:00
Rules
- Never store credential values, passwords, tokens, or connection strings
- Key Vault secret names are fine (e.g.
Endesa--ApiKey) — values are not - DB schema references are fine (e.g.
endesa.ContractosAtivos) — data is not - Session files are safe to commit and should be committed alongside feature work
- One session per Asana task — if a task spawns subtasks, use the parent ID