Forge changelog
This skill should be used when the user asks to "show recent changes", "show forge changelog", "show changelog for <project>", "what did I add this week", "what files did I touch today", "what packages keep recurring", "what drifts from the template", "review template suggestions", "show pending forge suggestions", "sync forge templates", "apply template suggestion", or "compute back-mapping suggestions". Provides read, drift-discovery, and template back-mapping workflows that wrap the `forge-db` MCP tools (`get_changelog`, `compute_suggestions`, `apply_suggestion`).From its SKILL.md
npx -y skills add kyuna0312/context_forge --skill forge-changelogAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.3 KB, as published. Nobody here has run it
forge-changelog
Surface the forge changelog and the template back-mapping loop. Forge records every Write / Edit into a Postgres changelogs table via a PostToolUse hook; this skill turns that raw stream into three useful workflows: reading recent activity, discovering drift between projects and their templates, and applying recurring drift back into the templates.
This skill complements the /changelog and /sync-template slash commands. The commands are explicit invocations; this skill activates when the user phrases the same intent in conversation (e.g. "what packages keep showing up across my Next.js projects?" instead of typing /sync-template).
Required environment
The forge half of context_forge depends on:
FORGE_DATABASE_URLexported in the shell that launched Claude Code- The
forge-dbMCP server reachable (registered in.mcp.json) - Postgres schema applied (
mcp/db/schema.sql)
If any forge-db tool returns an error like connection refused or relation does not exist, stop and report the missing piece — do not fabricate changelog data to fill the gap.
When to activate
Activate on intent, not on exact wording. Treat these intents as in-scope:
| Intent | Example phrasing | Workflow |
|---|---|---|
| Read history | "what did I change in acme-api yesterday" | Read workflow |
| Filter by type | "list packages I added by hand" | Read workflow + client-side filter |
| Discover drift | "what keeps showing up across all my Next.js projects" | Drift workflow |
| Review suggestions | "show pending template suggestions" | Drift workflow |
| Apply suggestion | "fold zod into the nextjs-trpc-drizzle template" | Apply workflow |
| Cross-project rollup | "what files did I touch today" (no project) | Read workflow, omit project_name |
Out of scope — defer or refuse:
- Writing new changelog rows manually (use
record_changein/scaffoldor hooks, not from this skill). - Inventing a
change_typeoutside{file_created, file_edited, dep_added, stack_changed}. - Applying suggestions without explicit per-item user confirmation.
Workflow 1 — Read changelog
Use when the user wants to see what happened (a project, a day, "lately").
- Resolve the project name. If the user named one, pass it as
project_name. If they said "all projects" or omitted, do not passproject_name— that returns global history. - Resolve the limit. Default to 50. If the user said "lately" or "this week", request 200 and filter client-side by
created_at. - Call
mcp__forge-db__get_changelogwith the resolved args. - Group the returned rows by calendar day, newest day first. Within a day, keep the order returned by the tool (newest
idfirst). - Render each row as:
HH:MM — <change_type> — <file_path or package> [— summary]. Strip the project name from the per-row line if all rows in the result share one project; otherwise prefix[project_name]. - Report the row count and the date range covered. Do not editorialise — state only what the rows show.
If the tool returns zero rows, say so plainly. Do not pad the answer with a guess at what "probably" changed.
Workflow 2 — Discover drift (back-mapping)
Use when the user wants to know what manual additions recur — the signal that a template is incomplete.
- Call
mcp__forge-db__compute_suggestionswithmin_occurrencesdefaulting to2. If the user said "really recurring" or "only frequent", raise it to3or higher. - The tool returns pending suggestions, ordered by occurrence count descending. Each row carries
template_id,kind(currently alwaysadd_dep),payload(JSON{ "package": "..." }),occurrences, andstatus. - For each suggestion, render one plain-language line:
[<occurrences>×] Add <package> to template "<template name>" — currently added by hand in <occurrences> project(s).The template name is not in the suggestion row (onlytemplate_id) — callmcp__forge-db__list_templatesonce and map id → name from its result. (get_templatelooks up by name, so it cannot resolve an id.) Cache the map within the response. - List suggestions sorted by occurrences desc. Stop after rendering; do not apply anything.
- Ask the user which suggestions to apply (by id or by package name). Wait for an explicit answer.
If the tool returns zero pending suggestions, say so plainly. Possible reasons: not enough manual deps yet (raise the threshold? lower it?), or every recurring dep is already in the template.
Workflow 3 — Apply suggestion
Use only after the user explicitly named which suggestions to apply.
- For each chosen suggestion, call
mcp__forge-db__apply_suggestionwithsuggestion_idand aversion. If the user named a version ("zod 3.23"), pass it; otherwise pass"latest"and note in the reply that the user can pin it later by re-running with an explicit version. - Call the tool once per suggestion. Do not batch — the MCP tool takes a single id at a time.
- After all calls succeed, report which templates changed and which packages were added.
- If a call fails, surface the error verbatim and stop. Do not retry silently and do not assume the failed one succeeded.
Never apply suggestions on a --apply flag alone. The slash command's --apply exists, but it does not grant blanket approval — the skill must still confirm each item with the user in this turn.
Anti-hallucination rules
These match the broader forge contract — break them and the skill produces lies:
- Changelog rows, suggestion rows, template names, and package versions are only what the MCP tools returned. Do not invent or extrapolate.
change_typeis a closed enum:file_created,file_edited,dep_added,stack_changed. Do not coin new types.- If a row's
project_nameisnull(denormalised fallback), say "unattached" — do not guess which project it belonged to. - If
compute_suggestionsreturns nothing, the answer is "nothing pending", not a fabricated suggestion. - Group, sort, and filter rows in the response. Do not summarise them into invented prose.
Output format
Default to plain markdown (this skill speaks in chat, not via LTX). Use a short heading per calendar day, then a bullet per row. Example shape:
### 2026-05-28
- 14:02 — file_edited — src/api/users.ts
- 13:55 — dep_added — zod (3.23.8)
- 09:11 — file_created — src/api/users.ts
### 2026-05-27
- 17:30 — stack_changed — runtime: node18 → node20
For suggestion review, use a numbered list so the user can reference items by number when choosing what to apply.
Tools used
All forge-db MCP tools, called only via the registered forge-db server:
mcp__forge-db__get_changelog— read workflowmcp__forge-db__compute_suggestions— drift workflowmcp__forge-db__list_templates— template_id → name mapping during drift workflowmcp__forge-db__get_template— name → full definition (only when the user names a template)mcp__forge-db__apply_suggestion— apply workflow
Do not call record_change from this skill — it is reserved for the hook and the /scaffold command.
Additional resources
Reference files
references/mcp-tool-reference.md— full input/output schema for each forge-db tool used here, plus edge cases (null project_name, stack_delta, conflict semantics onapply_suggestion).
Related components
commands/changelog.md—/changelogslash command (thin wrapper, same data source).commands/sync-template.md—/sync-templateslash command (same drift + apply flow).mcp/record-change.mjs—PostToolUsehook that writes the changelog rows this skill reads.mcp/db/schema.sql— Postgres schema defining the tables and thechange_typeenum-as-text.