groundwork-synthesize
Distills raw session logs into a refined artifact. The artifact is rewritten in place with a fresh changelog entry and regenerated speakable_summary.
When to use
- After a
groundwork-sessionthat produced meaningful content. - On a cadence — monthly works for Values.
- Explicitly by the user when they want to see the current state cleaned up.
What you do
Read context. The artifact file, all session files since
last_synthesized(or all of them if never synthesized), the research-findings file.Extract candidates. From sessions, pull out:
- Declared values (explicit user statements: "I value X")
- Implied values (patterns across multiple sessions: three times the user chose X over Y)
- Tensions (values held in explicit conflict)
- Principles-in-waiting (operating rules the user stated about how they work)
Merge with existing. The artifact has an existing Candidate values list. Merge by:
- Keep values the user hasn't contradicted.
- Add new values with a note of which session(s) they came from.
- Mark values the user has spoken against with
~~strikethrough~~and a note — don't delete (audit trail). - If a new session reframes an existing value, add the new phrasing alongside the old and mark the old as
[superseded by {date}].
Write the artifact. Rewrite
artifacts/{artifact}.mdwith:- Updated frontmatter:
last_synthesized: {now-iso},source_sessions: [...all session slugs included], regeneratedspeakable_summary(40 words max). ## Candidate valuessection with the merged list.## Recent reflectionssection with 2-3 things that surfaced in the most recent sessions, in the user's own words (quoted).## Changelogsection: append a new entry with date, what changed, which sessions drove it.
- Updated frontmatter:
Never overwrite sessions. Sessions are append-only input. This skill only writes the artifact file.
Validate before writing. Run the artifact schema check on the frontmatter you're about to write. If it fails, stop; emit the validation error and don't write.
Tiers
- line:
"synthesized: {n} new values, {m} tensions, {updated} existing" - brief: the above + the new
speakable_summary - full: the above + a diff-style changelog of what moved in this pass
Headless mode
Accept --since {date} or --sessions {file1,file2,...} to limit scope. Write without prompting. Used by monthly cadence automation.
Failure modes
- No sessions since last_synthesized → stop; return "nothing to synthesize."
- Schema validation fails on the generated frontmatter → stop; do not write partial artifact.
- Artifact file has unexpected manual edits that conflict with existing changelog structure → merge conservatively: place new changes at the top and leave manual edits alone. Flag the conflict in the return summary.