From 348ef9f6b527344a10f37056ffb185dc2c342e51 Mon Sep 17 00:00:00 2001
From: m3tam3re
Date: Fri, 9 Oct 2026 03:24:58 +0200
Subject: [PATCH] feat: more skills
---
agent-lib.lock.json | 84 ++++++++++++++++++-
external/mattpocock/skills/ask-matt/SKILL.md | 4 +-
.../mattpocock/skills/code-review/SKILL.md | 8 +-
.../skills/diagnosing-bugs/SKILL.md | 2 +-
external/mattpocock/skills/grilling/SKILL.md | 2 +
external/mattpocock/skills/handoff/SKILL.md | 2 +-
external/mattpocock/skills/implement/SKILL.md | 6 +-
.../skills/setup-matt-pocock-skills/SKILL.md | 2 +
.../issue-tracker-github.md | 9 +-
.../issue-tracker-gitlab.md | 4 +-
.../setup-matt-pocock-skills/triage-labels.md | 2 +-
external/mattpocock/skills/tdd/SKILL.md | 2 +-
external/mattpocock/skills/teach/SKILL.md | 4 +-
.../mattpocock/skills/to-tickets/SKILL.md | 4 +-
external/mattpocock/skills/wayfinder/SKILL.md | 8 +-
external/mattpocock/skills/wizard/template.sh | 45 +++++-----
16 files changed, 143 insertions(+), 45 deletions(-)
diff --git a/agent-lib.lock.json b/agent-lib.lock.json
index bae51cd..1de563d 100644
--- a/agent-lib.lock.json
+++ b/agent-lib.lock.json
@@ -4,7 +4,7 @@
"mattpocock": {
"url": "https://github.com/mattpocock/skills.git",
"ref": "main",
- "rev": "d81f3a183412e71a5b1e84ca21bc1a35eea03a60",
+ "rev": "b0618bc436ad893b3c5e84e55fba86586d34a404",
"discovery": {
"skills_dir": "skills"
},
@@ -18,6 +18,7 @@
"inventory": {
"skills": [
"ask-matt",
+ "chief-of-staff",
"code-review",
"codebase-design",
"diagnosing-bugs",
@@ -55,6 +56,87 @@
]
}
},
+ "officecli": {
+ "url": "https://github.com/iOfficeAI/OfficeCLI.git",
+ "ref": "main",
+ "rev": "8d079c777ed6bea35b922c3d893758d3c2081137",
+ "selection": {
+ "mode": "all",
+ "exclude": [
+ "morph-ppt",
+ "morph-ppt-3d"
+ ],
+ "exclude_types": [
+ "agents",
+ "commands",
+ "mcp"
+ ]
+ },
+ "inventory": {
+ "skills": [
+ "officecli",
+ "officecli-academic-paper",
+ "officecli-data-dashboard",
+ "officecli-docx",
+ "officecli-financial-model",
+ "officecli-pitch-deck",
+ "officecli-pptx",
+ "officecli-word-form",
+ "officecli-xlsx"
+ ]
+ }
+ },
+ "okf": {
+ "url": "https://github.com/scaccogatto/okf-skills.git",
+ "ref": "main",
+ "rev": "8e3187875e66051bb52f91a5ed27342e2c3208da",
+ "selection": {
+ "mode": "all"
+ },
+ "inventory": {
+ "agents": [
+ "bundle-weaver",
+ "event-analyzer"
+ ],
+ "skills": [
+ "backfill",
+ "okf",
+ "validate",
+ "visualize"
+ ]
+ },
+ "warnings": [
+ "agents/bundle-weaver: malformed frontmatter line (missing colon): Fold event analyses into an OKF knowledge bundle in deterministic sequence. This is the",
+ "agents/bundle-weaver: malformed frontmatter line (missing colon): concepts over time, enforce anti-degeneration rules, and guarantee no events are lost.",
+ "agents/bundle-weaver: malformed frontmatter line (missing colon): only agent that writes `.okf/`, executing the reduce phase of backfill replay to evolve",
+ "agents/event-analyzer: malformed frontmatter line (missing colon): # Retier by forking this file; the backfill skill resolves the agent by name.",
+ "agents/event-analyzer: malformed frontmatter line (missing colon): # on the condition that the two explicit instructions below (flag source, evidence-only claims) stay.",
+ "agents/event-analyzer: malformed frontmatter line (missing colon): Analyze a single repository history event (git commit or session turn) to extract domain",
+ "agents/event-analyzer: malformed frontmatter line (missing colon): concepts and semantic content. Use in parallel during the map phase of OKF backfill replay",
+ "agents/event-analyzer: malformed frontmatter line (missing colon): to materialize decision rationale from raw commit diffs and session outcomes.",
+ "skills/backfill: malformed frontmatter line (missing colon): Reconstruct an OKF bundle by event-sourcing a repository's history (git log",
+ "skills/backfill: malformed frontmatter line (missing colon): and Claude session transcripts). Use when creating an `.okf/` bundle for an",
+ "skills/backfill: malformed frontmatter line (missing colon): existing repository that predates this skill, or when resuming an interrupted",
+ "skills/backfill: malformed frontmatter line (missing colon): knowledge bundle\", \"event-source the history\".",
+ "skills/okf: malformed frontmatter line (missing colon): \"capture this as a concept\", or any work in a repo that has an OKF bundle.",
+ "skills/okf: malformed frontmatter line (missing colon): Author, maintain, and consume Open Knowledge Format (OKF) knowledge bundles —",
+ "skills/okf: malformed frontmatter line (missing colon): capturing project knowledge (services, APIs, schemas, metrics, runbooks,",
+ "skills/okf: malformed frontmatter line (missing colon): decisions) into an OKF bundle, when updating one after code or docs change, or",
+ "skills/okf: malformed frontmatter line (missing colon): portable markdown + YAML frontmatter that both humans and agents read. Use when",
+ "skills/okf: malformed frontmatter line (missing colon): when a repository contains an `.okf/` (or other OKF) bundle that should inform",
+ "skills/validate: malformed frontmatter line (missing colon): Check that an Open Knowledge Format (OKF) bundle is conformant with the v0.2",
+ "skills/validate: malformed frontmatter line (missing colon): committing changes to one. Runs a deterministic Python checker — not an",
+ "skills/validate: malformed frontmatter line (missing colon): eyeball pass. Also migrates a v0.1 bundle to v0.2 in place with `--migrate`.",
+ "skills/validate: malformed frontmatter line (missing colon): spec (§11). Use when asked to validate, lint, or check an OKF bundle, or before",
+ "skills/visualize: malformed frontmatter line (missing colon): Render an Open Knowledge Format (OKF) bundle as a single self-contained,",
+ "skills/visualize: malformed frontmatter line (missing colon): Use when asked to visualize, graph, preview, or explore an OKF bundle.",
+ "skills/visualize: malformed frontmatter line (missing colon): a wiki-style detail panel with rendered markdown, v0.2 trust/lifecycle/provenance",
+ "skills/visualize: malformed frontmatter line (missing colon): filter and search.",
+ "skills/visualize: malformed frontmatter line (missing colon): interactive HTML graph (viz.html) — concepts as nodes coloured by type and",
+ "skills/visualize: malformed frontmatter line (missing colon): metadata, and \"Links to\" / \"Cited by\" backlinks, layout switching, per-type",
+ "skills/visualize: malformed frontmatter line (missing colon): sized by body length, markdown links and bundle-internal `sources` as edges,"
+ ]
+ },
"superpowers": {
"url": "https://github.com/obra/superpowers.git",
"ref": "main",
diff --git a/external/mattpocock/skills/ask-matt/SKILL.md b/external/mattpocock/skills/ask-matt/SKILL.md
index ce33ac6..4bfeeb6 100644
--- a/external/mattpocock/skills/ask-matt/SKILL.md
+++ b/external/mattpocock/skills/ask-matt/SKILL.md
@@ -8,6 +8,8 @@ disable-model-invocation: true
You don't remember every skill, so ask.
+Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are for orientation only.
+
A **flow** is a path through the skills. Most paths run along one **main flow**, and two **on-ramps** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
## The main flow: idea → ship
@@ -45,7 +47,7 @@ A starting situation that generates work, then merges onto the main flow.
Triage is only for issues **you didn't create**: bug reports, incoming feature requests, anything that arrives raw. Tickets that `/to-tickets` produced are already agent-ready, so **don't triage them**.
-- **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **tight feedback loop** (one command that already goes red on *this* bug), then fixes with a regression test. Its post-mortem hands off to **`/improve-codebase-architecture`** when the real finding is that there's no good seam to lock the bug down.
+- **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **tight feedback loop** (one command that already goes red on *this* bug), then fixes with a regression test. Once the fix is in, run **`/retro`** in the same session to ask what would have prevented the bug; where the real finding is that there's no good seam to lock it down, that's a job for **`/improve-codebase-architecture`**.
- **A huge, foggy effort: a greenfield project or a huge feature build, too big for one session** → **`/wayfinder`**, the most cognitively demanding flow here. When the way from here to the destination isn't visible yet, it charts a **shared map** of **decision tickets** on the issue tracker and resolves them one at a time, producing **decisions, not deliverables**, until the fog is pushed back and the way is clear. Where **`/grill-with-docs`** sharpens an idea you can hold in one session, wayfinder is for the idea you can't, and it's slower and denser, so save it for exactly that, never a well-scoped feature.
diff --git a/external/mattpocock/skills/code-review/SKILL.md b/external/mattpocock/skills/code-review/SKILL.md
index e28d7ac..373a4f2 100644
--- a/external/mattpocock/skills/code-review/SKILL.md
+++ b/external/mattpocock/skills/code-review/SKILL.md
@@ -10,7 +10,7 @@ Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings.
-The issue tracker should have been provided to you. If `docs/agents/issue-tracker.md` is missing, tell the user to run `/setup-matt-pocock-skills`.
+The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
## Process
@@ -26,14 +26,14 @@ Before going further, confirm the fixed point resolves (`git rev-parse
```
+Word each question so "yes" accepts your recommended answer.
+
Each round the user answers reshapes the tree: settled decisions push the frontier outward and unblock questions that depended on them. Recompute the frontier and ask the next round. A question whose answer depends on another question still open in this round belongs to a _later_ round, not this one.
Finding _facts_ is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. The _decisions_ are the user's: put each to them and wait.
diff --git a/external/mattpocock/skills/handoff/SKILL.md b/external/mattpocock/skills/handoff/SKILL.md
index 2eb98a5..a224edc 100644
--- a/external/mattpocock/skills/handoff/SKILL.md
+++ b/external/mattpocock/skills/handoff/SKILL.md
@@ -5,7 +5,7 @@ argument-hint: "What will the next session be used for?"
disable-model-invocation: true
---
-Write a handoff document summarising the current conversation so a fresh agent can continue the work. Save to the temporary directory of the user's OS - not the current workspace.
+Write a handoff document summarising the current conversation so a fresh agent can continue the work. Save to the temporary directory of the user's OS (`$TMPDIR`, else `/tmp`; `%TEMP%` on Windows) - not the current workspace.
Include a "suggested skills" section in the document, naming which skills the next agent should call the Skill tool for.
diff --git a/external/mattpocock/skills/implement/SKILL.md b/external/mattpocock/skills/implement/SKILL.md
index 7a0b11f..bd49e47 100644
--- a/external/mattpocock/skills/implement/SKILL.md
+++ b/external/mattpocock/skills/implement/SKILL.md
@@ -6,10 +6,12 @@ disable-model-invocation: true
Implement the work described by the user in the spec or tickets.
-Use /tdd where possible, at pre-agreed seams.
+If the user passes a ticket reference, fetch it from the issue tracker and state its title before starting. If the reference is ambiguous, ask.
+
+Call the Skill tool with "tdd" where possible, at pre-agreed seams.
Run typechecking regularly, single test files regularly, and the full test suite once at the end.
-Once done, use /code-review to review the work.
+Once done, call the Skill tool with "code-review" to review the work.
Commit your work to the current branch.
diff --git a/external/mattpocock/skills/setup-matt-pocock-skills/SKILL.md b/external/mattpocock/skills/setup-matt-pocock-skills/SKILL.md
index c0d850b..293c25b 100644
--- a/external/mattpocock/skills/setup-matt-pocock-skills/SKILL.md
+++ b/external/mattpocock/skills/setup-matt-pocock-skills/SKILL.md
@@ -101,6 +101,8 @@ The block:
Include the `### Triage labels` sub-block, and write `docs/agents/triage-labels.md`, only when `triage` is installed and Section B ran. When it isn't, both are omitted.
+When Section B ran on GitHub or GitLab, create each configured label the tracker lacks (`gh label create` / `glab label create`).
+
Then write the docs files using the seed templates in this skill folder as a starting point:
- [issue-tracker-github.md](./issue-tracker-github.md): GitHub issue tracker
diff --git a/external/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md b/external/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md
index b258aeb..a63510f 100644
--- a/external/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md
+++ b/external/mattpocock/skills/setup-matt-pocock-skills/issue-tracker-github.md
@@ -5,8 +5,9 @@ Issues and specs for this repo live as GitHub issues. Use the `gh` CLI for all o
## Conventions
- **Create an issue**: `gh issue create --title "..." --body "..."`. Use a heredoc for multi-line bodies.
-- **Read an issue**: `gh issue view --comments`, filtering comments by `jq` and also fetching labels.
+- **Read an issue**: `gh issue view --json number,title,body,labels,comments`.
- **List issues**: `gh issue list --state open --json number,title,body,labels,comments --jq '[.[] | {number, title, body, labels: [.labels[].name], comments: [.comments[].body]}]'` with appropriate `--label` and `--state` filters.
+- **Make an issue a sub-issue of a parent**: `gh issue create --parent ...`, or `gh issue edit --add-sub-issue ` afterwards (`gh` 2.94+). Older `gh`: `gh api --method POST repos///issues//sub_issues -F sub_issue_id=` (database id, as in **Blocking** below). Without sub-issues, put `Part of #` at the top of the child body.
- **Comment on an issue**: `gh issue comment --body "..."`
- **Apply / remove labels**: `gh issue edit --add-label "..."` / `--remove-label "..."`
- **Close**: `gh issue close --comment "..."`
@@ -20,7 +21,7 @@ Infer the repo from `git remote -v`; `gh` does this automatically when run insid
When set to `yes`, PRs run through the same labels and states as issues, using the `gh pr` equivalents:
- **Read a PR**: `gh pr view --comments` and `gh pr diff ` for the diff.
-- **List external PRs for triage**: `gh pr list --state open --json number,title,body,labels,author,authorAssociation,comments` then keep only `authorAssociation` of `CONTRIBUTOR`, `FIRST_TIME_CONTRIBUTOR`, or `NONE` (drop `OWNER`/`MEMBER`/`COLLABORATOR`).
+- **List external PRs for triage**: `gh api --paginate 'repos/{owner}/{repo}/pulls?state=open' --jq '.[] | select(.author_association | IN("OWNER","MEMBER","COLLABORATOR") | not) | {number, title, author: .user.login, author_association, labels: [.labels[].name]}'`.
- **Comment / label / close**: `gh pr comment`, `gh pr edit --add-label`/`--remove-label`, `gh pr close`.
GitHub shares one number space across issues and PRs, so a bare `#42` may be either: resolve with `gh pr view 42` and fall back to `gh issue view 42`.
@@ -31,14 +32,14 @@ Create a GitHub issue.
## When a skill says "fetch the relevant ticket"
-Run `gh issue view --comments`.
+Read it as in **Read an issue** above.
## Wayfinding operations
Used by `/wayfinder`. The **map** is a single issue with **child** issues as tickets.
- **Map**: a single issue labelled `wayfinder:map`, holding the Notes / Decisions-so-far / Fog body. `gh issue create --label wayfinder:map`.
-- **Child ticket**: an issue linked to the map as a GitHub sub-issue (`gh api` on the sub-issues endpoint). Where sub-issues aren't enabled, add the child to a task list in the map body and put `Part of #