# Spec Sheet — Capture (Settled Thinking)

**What you are building:** A skill that extracts the settled thinking from a thought-partnership conversation into one strictly-formatted markdown file and pushes it to an inbox where a downstream reconciler folds it into your source-of-truth files.

> Bracketed [PLACEHOLDERS] are yours to fill in for your own setup. Any credential in the original has been redacted — supply your own (a repo access token, an API key) from a secret store or environment variable, never inline in the skill file or in anything the skill ships.

## 1. Purpose
Turn the end of a thinking session into a clean, parse-ready record of what actually moved — positions that settled, beliefs that shifted, the state of your work-streams, and stray ideas to bank. The file is consumed by a separate reconcile step, so the format is a contract, not a style choice. The skill's job is honest extraction and reliable delivery, not summary.

## 2. Activation
- **Name:** `[system]-capture`.
- **Description (drives auto-trigger):** Write a description that fires when the user signals the end of a thinking session. Include the explicit trigger phrases — "capture this", "capture for [SYSTEM]", "wrap up", "end of conversation capture" — and state what it does (extracts settled positions, changes to standing thinking, current-state updates, work-stream updates, and idea backlog, in the reconciliation format, then pushes to the inbox). Crucially, draw the line against your sibling history-capture skill: "extracts settled thinking; it does not record what happened." The contrast is what stops the two from mis-triggering.

## 3. Inputs and preconditions
- The current conversation is the sole content input.
- Preconditions: the transport repo exists and is reachable; the destination inbox folder exists; a valid credential is available from your secret store; the downstream reconcile skill expects this exact format.

## 4. Outputs and side effects
- One markdown file named `YYYY-MM-DD-<three-to-six-word-slug>.md`.
- Side effect: a git commit (message `[system] capture: <slug>`) pushed to the inbox folder in the transport repo.
- On success: a confirmation quoting the filename and the real push output. On double-failure: the file offered as a download, with transport failure stated plainly.

## 5. Environment and dependencies
- **Transport repo:** a private git repository acting as courier, e.g. `https://github.com/<owner>/<repo>.git`. Authenticated with a credential the builder supplies (redacted; never inline).
- **Inbox folder:** a destination path inside that repo, e.g. `[SYSTEM]-inbox/`.
- **Commit identity:** a name/email for the commit, e.g. `[YOUR NAME] <[YOUR NOREPLY EMAIL]>`.
- **Downstream reconciler:** a separate skill that reads this folder and merges captures into your source-of-truth files (the analog of patterns / work-streams / current-state / idea-backlog).
- **A working clone path** for the shallow clone, e.g. a scratch dir in the runtime.

## 6. Procedure
1. **Name the file:** `YYYY-MM-DD-<three-to-six-word-slug>.md`.
2. **Write in EXACTLY this structure** (section names and `**FIELD:**` markers are verbatim — the reconciler parses them literally):

   ```
   # [System] Capture — <topic>

   **Date:** YYYY-MM-DD
   **Source:** <2–4 sentences: what the session was and how the thinking moved>

   ---

   ## SETTLED POSITIONS
   **ITEM:** <the position, as a claim>
   **CONTEXT:** <why it holds; derivation; scope; what it supersedes>
   **SOURCE QUOTE:** "<the user's own words, when a sharp one exists>"

   ## CHANGES TO STANDING THINKING
   **ITEM:** <the change to existing thinking>
   **CONTRADICTS or REFINES:** <existing position + which source file>
   **CONTEXT:** <what moved and why>
   **SOURCE QUOTE:** "<quote, if one>"

   ## UPDATES TO CURRENT STATE
   **ITEM:** <what is now true / top of mind / parked>
   **TYPE:** <Top of mind | Recent shift | Recent decision | Parked>
   **CONTEXT:** <detail; which current-state entry this makes stale>

   ## UPDATES TO [WORK-STREAMS] CONTEXT
   **ITEM:** <stream-level development>
   **TRACK:** <[STREAM A] | [STREAM B] | [STREAM C]>
   **TYPE:** <New development | Shifted positioning>
   **CONTEXT:** <detail>

   ## [IDEA] BACKLOG
   - [YYYY-MM-DD] <one bullet per idea — flat backlog, not classified>
   ```

3. **Apply the extraction rules:**
   - Include only what actually settled or shifted in *this* conversation. Empty sections are written as "None this conversation", never padded.
   - Surface contradictions with existing thinking explicitly under CHANGES TO STANDING THINKING; never smooth them over.
   - Keep the user's own language in SOURCE QUOTE where a sharp quote exists.
   - In CONTEXT, capture more than the conclusion where it applies: the derivation, how settled it felt and what would reverse it, and anything explicitly ruled out (the negative space). The reconciler already reads CONTEXT, so the detail is free.
   - The idea backlog is a flat, date-prefixed list — one bullet per idea, never classified or contradiction-checked.
4. **Ship to the courier** (shell; substitute `<file>`, inject the credential from your secret store):
   ```
   git clone --depth 1 "$REPO" [WORKING_CLONE_PATH]
   cp <file>.md [WORKING_CLONE_PATH]/[SYSTEM]-inbox/
   cd [WORKING_CLONE_PATH]
   git config user.email "[YOUR NOREPLY EMAIL]"
   git config user.name "[YOUR NAME]"
   git add -A
   git commit -m "[system] capture: <slug>"
   git push
   ```
   If the push is rejected: `git pull --rebase`, then push once more.
5. **Confirm** with the filename and the actual `git push` output quoted. Never report success without it.

## 7. Edge cases and failure handling
- **Push rejected once:** `git pull --rebase`, push again.
- **Push fails twice:** present the capture as a downloadable `.md` file and state plainly that transport failed, so no capture is ever lost.
- **Nothing settled this session:** still legitimate — every section reads "None this conversation"; do not invent content to fill them.
- **Fuzzy idea:** flag it or leave it out; never inflate it into a settled position.

## 8. Guardrails / hard rules
- This is a structured extraction for reconciliation, not a descriptive record. Do not imitate the sibling history-capture summary format.
- Honest classification over generous: a refinement is not a net-new position; a fuzzy idea is flagged or omitted, never inflated.
- Never place the credential in the capture file or any shipped content.
- Keep section names and field markers byte-for-byte as specified — the downstream parser depends on them.

## 9. Acceptance criteria
- Running the skill on a real session produces a file named `YYYY-MM-DD-<slug>.md` in the inbox folder of the transport repo.
- The file contains all five sections in order with the exact headings and field markers; empty sections read "None this conversation".
- A refinement to an existing belief lands under CHANGES TO STANDING THINKING (with CONTRADICTS or REFINES naming the file), not under SETTLED POSITIONS.
- No credential appears anywhere in the committed file.
- The final message quotes the filename and the actual push output; on forced failure it instead offers a downloadable file and names the failure.
- The downstream reconciler parses the file with no manual cleanup.

## 10. Adapt to your setup
- Replace `[System]` with your system's name and the four source-of-truth files with your own analogs (patterns / work-streams / current-state / idea-backlog).
- Replace the work-streams in the TRACK field with your own ([STREAM A] | [STREAM B] | [STREAM C]).
- Set the transport repo URL, inbox folder name, working clone path, and commit identity for your environment.
- Wire the credential through a secret store or env var; never inline it.
- Confirm the format here matches exactly what your reconcile skill parses — the two are one contract.

---

```markdown
---
name: [system]-capture
description: >-
  Capture this thought-partnership conversation into [SYSTEM]. Use when the user
  says "capture this", "capture for [SYSTEM]", "wrap up", "end of conversation
  capture", or similar. Extracts settled positions, changes to standing thinking,
  current-state updates, work-stream updates, and idea backlog in the
  reconciliation format, then pushes the capture to [SYSTEM]-inbox in the private
  transport repository. Distinct from the history capture; this extracts settled
  thinking, it does not record what happened.
---

# [System] capture

## Configuration
REPO = <transport repo URL; credential injected from a secret store, never inline>
DEST = [SYSTEM]-inbox/
COMMIT IDENTITY = [YOUR NAME] <[YOUR NOREPLY EMAIL]>

## What this is
<One paragraph: a structured extraction of settled thinking for reconciliation
into your source-of-truth files. NOT a descriptive summary. Honest
classification over generous.>

## Procedure
<Filename rule; the exact five-section format with verbatim field markers; the
extraction rules; the ship-to-courier shell sequence; the confirm-with-push-
output rule.>

## Hard rules
<Extraction not summary; never inline the credential; keep format byte-exact;
on double-failure offer a download so no capture is lost.>
```
