Workflows¶
Four end-to-end walkthroughs that chain skills together. Each is a real EMPN research situation, not a feature demo. Per-skill detail lives in each SKILL.md; this page shows how they fit together.
1. Start a project on a new topic¶
You have an idea (Capacity mechanisms post-2025 reform). You want a folder
to drop things into, a research question on paper, and a literature scan to
know what's already out there.
| Step | Skill | Output |
|---|---|---|
| 1. Scaffold the folder | project-init |
05_Projects/02_Energy-and-Climate/05_Projects/capacity-mechanisms/ with the standard skeleton |
| 2. Map the policy landscape | energy-policy-search |
What the Commission, Council, ACER, and the major think tanks have said. URLs cited. |
| 3. Map the academic landscape | literature-review |
Settled findings vs contested ones, with source strength. Saved to _knowledge.md. The skill fans out via Task when the reference list runs long. |
| 4. Pull baseline data | energy-data-search → energy-data-analysis |
Wide-format CSVs in 03_Analysis/data/ with _sources.md. Headline charts in chat. |
| 5. Draft the brief | policy-brief |
2-pager in 04_Drafts/ |
| 6. Verify before shipping | fact-check |
Flagged claims that need a citation or correction. The skill fans out via Task for briefs with many claims. |
Total time, depending on topic depth: half a day to a week. The skills don't do the thinking — they remove the friction between knowing what you want and having a defensible draft.
2. Track an EU legislative file end-to-end¶
A new file drops in the OJ — say the European Grids Package (2025/0399(COD)).
You want everything in one place and the political read in your head.
| Step | Skill | Output |
|---|---|---|
| 1. Procedural status | eu-policy-research |
Rapporteur, shadows, Council position, trilogue stage, next milestone |
| 2. Pull every public document | eu-legislation-tracker |
Dossier folder under <project>/02_Knowledge/proposals/european-grids-package/ with COM proposal, IA, EP draft report, EPRS briefing, Council ST-docs (when public). _index.md maps every file to its CELEX, stage, date, and source URL. |
| 3. Map the actor constellation | stakeholder-map |
Industry, NGOs, think tanks, MS positions — declared positions with URLs. The skill fans out one Task per tier on dense files. |
| 4. Synthesise consultation feedback | eu-consultation-feedback |
synthesis.md grounded in the full text of every PDF response, with axis-by-axis stance distribution |
| 5. Profile key MEPs as you meet them | contact-profile |
HubSpot record per person (canonical), with portfolio, positions, and sources. Optional local view 03_Contacts/<name>.md rendered from the row for grep / briefing reads. |
Steps 1–2 take about 30 minutes for a fresh file. Step 4 is the long one (10–60 minutes depending on response volume) but runs unattended once you've validated the discovered axes.
For an at-a-glance reference of which documents exist at which OLP stage
(and which are typically LIMITE or never public), see
eu-legislation-process.md
— per-stage mermaid diagrams plus the gaps usually missing from analysis.
3. Pull a number, work it, cite it¶
You're writing and need a defensible figure. The flow:
| Step | Skill | What happens |
|---|---|---|
| 1. Find and pull | energy-data-search |
Routes to the right primary source (Eurostat, ENTSO-E, ACER, ENTSOG, IEA, etc.), fetches via API, saves wide-format CSV to 05_Projects/02_Energy-and-Climate/04_Library/data/ |
| 2. Analyse | energy-data-analysis |
Growth rates, ratios, country comparisons, indices. Reads the CSV from step 1. |
| 3. Drop into the brief | policy-brief (or just paste) |
The figure carries its _sources.md provenance with it |
| 4. Final check | fact-check |
Verifies the number against the cited source one more time before publication |
The discipline that matters: every figure is traceable to a primary publisher
via _sources.md. If you skip step 1 and paste a number from elsewhere, the
brief will still get fact-checked, but the trail is harder to reconstruct.
4. Profile someone you just met¶
Trivial flow but the most-used.
"I just met Linda Kalcher at a Bruegel event — log her."
contact-profile:
- Looks her up across institutional pages, LinkedIn, recent press.
- Routes the structured fields through
contact-verify→hubspot_write.pyand writes the canonical record to HubSpot (Founder of Strategic Perspectives, EU climate diplomacy, 2040 target — withfield_sourcestagging every cell). - Optional: renders a local view at
03_Contacts/linda_kalcher.mdfrom the freshly-written HubSpot row, with the<!-- Generated from HubSpot — do not edit -->header. Safe to delete at any time and re-render. There is noindex.md— partner / theme lookups go through HubSpot live. - Reports back: "Created HubSpot record
<id>for Linda Kalcher — Founder of Strategic Perspectives, focuses on EU climate diplomacy and 2040 target. Could not verify whether she still has a formal Bruegel affiliation — flagged. Local view rendered to03_Contacts/linda_kalcher.md."
Personal notes (How we met, Last interaction, Relationship notes)
live on the HubSpot record — engagement timeline + notes — not in the
local view. Re-running the skill refreshes the HubSpot row
(missing-fields-only, never overwriting human edits) and regenerates the
local view.
5. Build an interactive tracker¶
You want a live, citeable tracker on empn.eu — a country × measure matrix,
a live monitor, an annual benchmark, or an asset atlas. The chain runs once
to create it, then you forever after just edit a CSV.
| Step | Skill | What happens |
|---|---|---|
| 1. Spec it | tracker-init |
Walks you through 18 questions over ~8 minutes — what the tracker covers, refresh cadence, archetype, who maintains it. Emits a tracker.spec.yaml. |
| 2. Scaffold | tracker-scaffold |
Reads the spec, creates a private GitHub repo, clones the pilot's structure (Astro + D3 + Tailwind + Python verifier + 4 source CSVs), runs the first build. You get a working tracker locally with 3 example rows. |
| 3. Tighten the look | tracker-design |
Per-tracker visual refinement on top of EMPN brand defaults — chart types, palette choices, masthead variant. Reads tracker-layout-doctrine.md. Optional if the pilot-shape default works for you. |
| 4. Launch | tracker-publish |
Runs the 12-point pre-launch checklist (DOI, methodology page, named authors, cite block, embed test, …), provisions Cloudflare Pages, points the subdomain, validates the live URL. |
After launch, the only recurring skill is:
| Update flow | Skill | What happens |
|---|---|---|
| Add a row, refresh data, flip a status | tracker-update-data |
Opens the right CSV in Excel (the user never sees JSON or Python), validates locally, commits, pushes, confirms CI green + live URL updated. ~5 minutes for a single row; ~30 minutes for an annual refresh. |
"Add the new CBAM measure Spain announced yesterday — €240m envelope, in-force from 1 July."
tracker-update-data opens data/source/measures.csv, walks you through
the columns (id / country=ES / category=fiscal / title /
description / status=in-force / targeting=non-targeted /
introduced=2026-07-01 / cost_eur_m=240 / source_url / as_of=today),
saves, runs npm run data, shows the 11/11 verifier output, commits with
Add measure ES: CBAM industry support 2026, pushes, watches CI.
The data model is two-tier:
- measures.csv — long format, one row per measure (the file you edit
weekly)
- countries.csv — wide format, one row per country (political context,
cost totals)
- electricity_mix.csv — long format, country × fuel × share (annual
Ember refresh)
- eu_aggregate.csv — key-value, EU-wide aggregates
Full pipeline contract: tracker-pipeline.md.
Page-layout contract: tracker-layout-doctrine.md.
Reference implementation: empn-tracker-pilot.
Common patterns¶
A few things worth knowing across all four flows:
- Skills hand off, they don't merge. If you ask
energy-data-searchto also draft a brief, it won't — it'll suggest you triggerpolicy-briefnext. This is intentional: each skill stays small enough to review. - Heavy work fans out automatically.
literature-review,fact-check,stakeholder-map, andeu-policy-researchbatch the work and spawn parallel Task helpers when the volume of source material would otherwise bury the main chat. The skill stays the entry point — you only see the merged result. - Outputs are versioned via Git of your vault, not the plugin. The plugin
ships skills; your project files in
05_Projects/02_Energy-and-Climate/are yours. Snapshot or back them up however your team does. - Things will go wrong. Cite the prompt that produced the bad output on team Slack — the skills are versioned and most issues get fixed within a day.