mirror of
https://github.com/mattpocock/skills.git
synced 2026-07-29 19:12:34 +07:00
Compare commits
12
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68af5c848e | ||
|
|
6eeb81b5fc | ||
|
|
e00eadb4bb | ||
|
|
2454c95dc3 | ||
|
|
7d684becad | ||
|
|
aa024cb195 | ||
|
|
d20ee2684e | ||
|
|
bddb833cba | ||
|
|
00ff03cac2 | ||
|
|
82e85064ea | ||
|
|
47bde84da0 | ||
|
|
6a62d72ab1 |
@@ -5,6 +5,7 @@
|
|||||||
{ "repo": "mattpocock/skills" }
|
{ "repo": "mattpocock/skills" }
|
||||||
],
|
],
|
||||||
"commit": false,
|
"commit": false,
|
||||||
|
"privatePackages": { "version": true, "tag": true },
|
||||||
"fixed": [],
|
"fixed": [],
|
||||||
"linked": [],
|
"linked": [],
|
||||||
"access": "restricted",
|
"access": "restricted",
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
"mattpocock-skills": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Recent skill updates:
|
|
||||||
|
|
||||||
- Add `ask-matt` user-invoked skill for triage and multi-session build guidance.
|
|
||||||
- Add `writing-great-skills` skill, with no-op hunting at the sentence level.
|
|
||||||
- Add `decision-mapping`, `prefactoring`, and `implement` (PRD-based) skills.
|
|
||||||
- Tighten the review skill: fail-fast ref check, single-sourced rules, no-op cuts.
|
|
||||||
- Rename terminology from Commands/Skills to User-invoked/Model-invoked across the docs.
|
|
||||||
- Remove the `caveman` and `zoom-out` skills and all references.
|
|
||||||
@@ -30,6 +30,7 @@ jobs:
|
|||||||
uses: changesets/action@v1
|
uses: changesets/action@v1
|
||||||
with:
|
with:
|
||||||
version: npx changeset version
|
version: npx changeset version
|
||||||
|
publish: npx changeset tag
|
||||||
commit: "chore: version skills"
|
commit: "chore: version skills"
|
||||||
title: "chore: version skills"
|
title: "chore: version skills"
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# mattpocock-skills
|
||||||
|
|
||||||
|
## 1.0.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [`e00eadb`](https://github.com/mattpocock/skills/commit/e00eadb4bb32c3d5a631ead1a5ed5d6a7c5f74e2) Thanks [@mattpocock](https://github.com/mattpocock)! - Extend the **`triage`** skill to triage external pull requests, treating a PR as an issue with attached code that runs through the same roles and state machine. PRs flow inline alongside issues (gated by a per-repo setup toggle), discovery surfaces only external PRs, the bug-only "reproduce" step is generalized into a single "verify the claim" step, and a redundancy check resolves already-implemented requests to `wontfix` without polluting the out-of-scope knowledge base. `setup-matt-pocock-skills` gains the PRs-as-a-request-surface toggle for GitHub/GitLab.
|
||||||
|
|
||||||
|
## 1.0.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [`d20ee26`](https://github.com/mattpocock/skills/commit/d20ee2684e2a9442698ac3c1e0f2c5b68c4cf296) Thanks [@mattpocock](https://github.com/mattpocock)! - Make the **`teach`** skill reuse-first. Lessons are now built from reusable **components** in `./assets/` — stylesheets, quiz widgets, simulators, diagram helpers. Reuse is the default: the agent reads `./assets/` before authoring a lesson, builds from what's there, and extracts anything new and reusable into a component rather than inlining it.
|
||||||
|
|
||||||
|
## 1.0.0
|
||||||
|
|
||||||
|
### Major Changes
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Add the **`ask-matt`** skill — a user-invoked router that points you at the right skill or flow for your situation.
|
||||||
|
|
||||||
|
**Breaking:** `ask-matt` routes over the other user-invoked skills in this repo, so it expects them to be installed.
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Add the shared design skills and rewire existing skills onto them.
|
||||||
|
|
||||||
|
- New **`codebase-design`** skill — the deep-module vocabulary (module, interface, depth, seam, adapter) and the principles for putting a lot of behaviour behind a small interface. The language that previously lived in `improve-codebase-architecture/LANGUAGE.md` now lives here, generalized for reuse across skills.
|
||||||
|
- New **`domain-modeling`** skill — actively build and sharpen a project's domain model, stress-testing terms against the glossary and keeping `CONTEXT.md` and ADRs current.
|
||||||
|
- `improve-codebase-architecture` now draws its architecture vocabulary from `/codebase-design` and its domain model from `/domain-modeling`.
|
||||||
|
- `tdd` now leans on `/codebase-design` for interface-design guidance — its inline `deep-modules.md` / `interface-design.md` notes were removed in favour of the shared skill.
|
||||||
|
- `grill-with-docs` now builds the domain model inline via `/domain-modeling`.
|
||||||
|
|
||||||
|
**Breaking:** these skills now depend on the new `codebase-design` / `domain-modeling` skills, so you must install them too.
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Remove the **`caveman`** and **`zoom-out`** skills.
|
||||||
|
|
||||||
|
- `caveman` was a duplicate of another skill I was testing and was never meant to be public.
|
||||||
|
- `zoom-out` went unused in practice, so it's been removed from the repo.
|
||||||
|
|
||||||
|
**Breaking:** both skills have been removed.
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Rename the **`diagnose`** skill to **`diagnosing-bugs`**.
|
||||||
|
|
||||||
|
**Breaking:** invoke it as `/diagnosing-bugs` — the old `/diagnose` name no longer exists.
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Replace **`write-a-skill`** with **`writing-great-skills`**.
|
||||||
|
|
||||||
|
- Removed `write-a-skill`.
|
||||||
|
- Added `writing-great-skills` (plus its `GLOSSARY.md`) — a reference for writing and editing skills well: the vocabulary and principles that make a skill predictable, hunting no-ops down to the sentence level.
|
||||||
|
- Exposed `grilling` as a model-invoked skill — the reusable interview loop behind `grill-me` and `grill-with-docs`.
|
||||||
|
|
||||||
|
**Breaking:** `write-a-skill` has been removed; use `writing-great-skills` instead.
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Add the **`resolving-merge-conflicts`** skill — a loop for resolving an in-progress git merge or rebase conflict. Standalone, with no dependencies on other skills.
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Rename the skill taxonomy from **Commands / Skills** to **User-invoked / Model-invoked** across the docs, and add `docs/invocation.md` defining the split: user-invoked skills are reachable only when you type them and exist to orchestrate; model-invoked skills can also be reached automatically when the task fits. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [`47bde84`](https://github.com/mattpocock/skills/commit/47bde84da032afb2e5058f997f3bbca47d321dbd) Thanks [@mattpocock](https://github.com/mattpocock)! - Tighten the **`review`** skill: fail-fast ref check, single-sourced rules, and no-op cuts.
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mattpocock-skills",
|
"name": "mattpocock-skills",
|
||||||
"version": "0.0.0",
|
"version": "1.0.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Matt Pocock's agent skills for real engineering",
|
"description": "Matt Pocock's agent skills for real engineering",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ Default posture: these skills were designed for GitHub. If a `git remote` points
|
|||||||
- **Local markdown** — issues live as files under `.scratch/<feature>/` in this repo (good for solo projects or repos without a remote)
|
- **Local markdown** — issues live as files under `.scratch/<feature>/` in this repo (good for solo projects or repos without a remote)
|
||||||
- **Other** (Jira, Linear, etc.) — ask the user to describe the workflow in one paragraph; the skill will record it as freeform prose
|
- **Other** (Jira, Linear, etc.) — ask the user to describe the workflow in one paragraph; the skill will record it as freeform prose
|
||||||
|
|
||||||
|
If — and only if — the user picked **GitHub** or **GitLab**, ask one follow-up:
|
||||||
|
|
||||||
|
> Explainer: Open-source repos often receive feature requests as pull requests, not just issues — a PR is an issue with attached code. If you turn this on, `/triage` pulls *external* PRs into the same queue and runs them through the same labels and states as issues (collaborators' in-flight PRs are left alone). Leave it off if PRs aren't a request surface for you.
|
||||||
|
|
||||||
|
- **PRs as a request surface** — yes / no (default: no). Record the answer in `docs/agents/issue-tracker.md`. For local-markdown and other trackers, skip this question — there are no PRs.
|
||||||
|
|
||||||
**Section B — Triage label vocabulary.**
|
**Section B — Triage label vocabulary.**
|
||||||
|
|
||||||
> Explainer: When the `triage` skill processes an incoming issue, it moves it through a state machine — needs evaluation, waiting on reporter, ready for an AFK agent to pick up, ready for a human, or won't fix. To do that, it needs to apply labels (or the equivalent in your issue tracker) that match strings *you've actually configured*. If your repo already uses different label names (e.g. `bug:triage` instead of `needs-triage`), map them here so the skill applies the right ones instead of creating duplicates.
|
> Explainer: When the `triage` skill processes an incoming issue, it moves it through a state machine — needs evaluation, waiting on reporter, ready for an AFK agent to pick up, ready for a human, or won't fix. To do that, it needs to apply labels (or the equivalent in your issue tracker) that match strings *you've actually configured*. If your repo already uses different label names (e.g. `bug:triage` instead of `needs-triage`), map them here so the skill applies the right ones instead of creating duplicates.
|
||||||
@@ -95,7 +101,7 @@ The block:
|
|||||||
|
|
||||||
### Issue tracker
|
### Issue tracker
|
||||||
|
|
||||||
[one-line summary of where issues are tracked]. See `docs/agents/issue-tracker.md`.
|
[one-line summary of where issues are tracked, plus whether external PRs are a triage surface]. See `docs/agents/issue-tracker.md`.
|
||||||
|
|
||||||
### Triage labels
|
### Triage labels
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,18 @@ Issues and PRDs for this repo live as GitHub issues. Use the `gh` CLI for all op
|
|||||||
|
|
||||||
Infer the repo from `git remote -v` — `gh` does this automatically when run inside a clone.
|
Infer the repo from `git remote -v` — `gh` does this automatically when run inside a clone.
|
||||||
|
|
||||||
|
## Pull requests as a triage surface
|
||||||
|
|
||||||
|
**PRs as a request surface: no.** _(Set to `yes` if this repo treats external PRs as feature requests; `/triage` reads this flag.)_
|
||||||
|
|
||||||
|
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 <number> --comments` and `gh pr diff <number>` 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`).
|
||||||
|
- **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`.
|
||||||
|
|
||||||
## When a skill says "publish to the issue tracker"
|
## When a skill says "publish to the issue tracker"
|
||||||
|
|
||||||
Create a GitHub issue.
|
Create a GitHub issue.
|
||||||
|
|||||||
@@ -14,6 +14,18 @@ Issues and PRDs for this repo live as GitLab issues. Use the [`glab`](https://gi
|
|||||||
|
|
||||||
Infer the repo from `git remote -v` — `glab` does this automatically when run inside a clone.
|
Infer the repo from `git remote -v` — `glab` does this automatically when run inside a clone.
|
||||||
|
|
||||||
|
## Merge requests as a triage surface
|
||||||
|
|
||||||
|
**MRs as a request surface: no.** _(Set to `yes` if this repo treats external merge requests as feature requests; `/triage` reads this flag.)_
|
||||||
|
|
||||||
|
When set to `yes`, MRs run through the same labels and states as issues, using the `glab mr` equivalents:
|
||||||
|
|
||||||
|
- **Read an MR**: `glab mr view <number> --comments` and `glab mr diff <number>` for the diff.
|
||||||
|
- **List external MRs for triage**: `glab mr list -F json`, then keep only MRs whose author is not a project member/owner (a contributor's MR, not a maintainer's in-flight work).
|
||||||
|
- **Comment / label / close**: `glab mr note`, `glab mr update --label`/`--unlabel`, `glab mr close`.
|
||||||
|
|
||||||
|
Unlike GitHub, GitLab numbers issues and MRs separately, so `#42` is unambiguous once you know which surface the maintainer means.
|
||||||
|
|
||||||
## When a skill says "publish to the issue tracker"
|
## When a skill says "publish to the issue tracker"
|
||||||
|
|
||||||
Create a GitLab issue.
|
Create a GitLab issue.
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
# Writing Agent Briefs
|
# Writing Agent Briefs
|
||||||
|
|
||||||
An agent brief is a structured comment posted on a GitHub issue when it moves to `ready-for-agent`. It is the authoritative specification that an AFK agent will work from. The original issue body and discussion are context — the agent brief is the contract.
|
An agent brief is a structured comment posted on a GitHub issue or PR when it moves to `ready-for-agent`. It is the authoritative specification that an AFK agent will work from. The original body and discussion are context — the agent brief is the contract.
|
||||||
|
|
||||||
|
The brief states **what the agent should do**, which stretches to both surfaces: for an issue, that's building the change from nothing; for a PR, it's what's left to do *to the existing diff* — finish it, close gaps, address review points. Same principles either way; the PR example below shows the difference.
|
||||||
|
|
||||||
## Principles
|
## Principles
|
||||||
|
|
||||||
@@ -143,6 +145,43 @@ checked for matches.
|
|||||||
- Bug reports (only enhancement rejections go to `.out-of-scope/`)
|
- Bug reports (only enhancement rejections go to `.out-of-scope/`)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Good agent brief (PR)
|
||||||
|
|
||||||
|
For a PR, "Current behavior" describes the state of the diff, and the brief asks the agent to finish or fix it rather than build from scratch.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Agent Brief
|
||||||
|
|
||||||
|
**Category:** enhancement
|
||||||
|
**Summary:** Finish the contributor's `--json` output flag for `triage list`
|
||||||
|
|
||||||
|
**Current behavior:**
|
||||||
|
The PR adds a `--json` flag that serializes the issue list to JSON. The happy
|
||||||
|
path works and the diff matches the project's command structure. Two gaps
|
||||||
|
remain: errors are still printed as human text (not JSON), and the new flag has
|
||||||
|
no test coverage.
|
||||||
|
|
||||||
|
**Desired behavior:**
|
||||||
|
With `--json`, all output — including errors — is well-formed JSON on stdout,
|
||||||
|
and the command's exit codes are unchanged. The existing human-readable output
|
||||||
|
is untouched when the flag is absent.
|
||||||
|
|
||||||
|
**Key interfaces:**
|
||||||
|
- The command's error path should emit `{ "error": string }` under `--json`
|
||||||
|
instead of the plain-text error
|
||||||
|
- Reuse the existing serializer the PR already added; don't introduce a second
|
||||||
|
|
||||||
|
**Acceptance criteria:**
|
||||||
|
- [ ] `triage list --json` emits valid JSON for both success and error cases
|
||||||
|
- [ ] Exit codes match the non-JSON command
|
||||||
|
- [ ] A test covers the `--json` success output and one error case
|
||||||
|
- [ ] Default (non-JSON) output is byte-for-byte unchanged
|
||||||
|
|
||||||
|
**Out of scope:**
|
||||||
|
- Adding `--json` to any other command
|
||||||
|
- Changing the JSON shape of the success payload the PR already defined
|
||||||
|
```
|
||||||
|
|
||||||
### Bad agent brief
|
### Bad agent brief
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
|
|||||||
@@ -83,7 +83,11 @@ The maintainer may:
|
|||||||
|
|
||||||
## When to write to `.out-of-scope/`
|
## When to write to `.out-of-scope/`
|
||||||
|
|
||||||
Only when an **enhancement** (not a bug) is rejected as `wontfix`. The flow:
|
Only when an **enhancement** (not a bug) is *rejected* as `wontfix`. This applies to enhancement PRs exactly as it does to issues — a rejected PR is recorded here so the same request doesn't return as fresh code.
|
||||||
|
|
||||||
|
Do **not** write here when something is closed as `wontfix` because it's **already implemented**. That's a built feature, not a rejected one; recording it would poison the dedup checks with false rejections. Instead, the closing comment points to where the feature already lives.
|
||||||
|
|
||||||
|
The flow:
|
||||||
|
|
||||||
1. Maintainer decides a feature request is out of scope
|
1. Maintainer decides a feature request is out of scope
|
||||||
2. Check if a matching `.out-of-scope/` file already exists
|
2. Check if a matching `.out-of-scope/` file already exists
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: triage
|
name: triage
|
||||||
description: Move issues through a state machine of triage roles — categorise, reproduce, grill if needed, and write agent-ready briefs.
|
description: Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
|
||||||
disable-model-invocation: true
|
disable-model-invocation: true
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -8,6 +8,8 @@ disable-model-invocation: true
|
|||||||
|
|
||||||
Move issues on the project issue tracker through a small state machine of triage roles.
|
Move issues on the project issue tracker through a small state machine of triage roles.
|
||||||
|
|
||||||
|
If this repo treats external pull requests as a request surface (see the issue-tracker config), triage covers them too: **a PR is an issue with attached code** — same roles, same states, same machine, with a few deltas marked "for a PR" below. Resolve a bare `#42` to an issue or PR per the tracker config.
|
||||||
|
|
||||||
Every comment or issue posted to the issue tracker during triage **must** start with this disclaimer:
|
Every comment or issue posted to the issue tracker during triage **must** start with this disclaimer:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -34,6 +36,8 @@ Five **state** roles:
|
|||||||
- `ready-for-human` — needs human implementation
|
- `ready-for-human` — needs human implementation
|
||||||
- `wontfix` — will not be actioned
|
- `wontfix` — will not be actioned
|
||||||
|
|
||||||
|
For a PR, the same states read against the attached code: `ready-for-agent` means a brief is attached and an agent should take the next step on the diff; `ready-for-human` means it's ready for a human to merge.
|
||||||
|
|
||||||
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
|
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
|
||||||
|
|
||||||
These are canonical role names — the actual label strings used in the issue tracker may differ. The mapping should have been provided to you - run `/setup-matt-pocock-skills` if not.
|
These are canonical role names — the actual label strings used in the issue tracker may differ. The mapping should have been provided to you - run `/setup-matt-pocock-skills` if not.
|
||||||
@@ -45,7 +49,7 @@ State transitions: an unlabeled issue normally goes to `needs-triage` first; fro
|
|||||||
The maintainer invokes `/triage` and describes what they want in natural language. Interpret the request and act. Examples:
|
The maintainer invokes `/triage` and describes what they want in natural language. Interpret the request and act. Examples:
|
||||||
|
|
||||||
- "Show me anything that needs my attention"
|
- "Show me anything that needs my attention"
|
||||||
- "Let's look at #42"
|
- "Let's look at #42" (issue or PR)
|
||||||
- "Move #42 to ready-for-agent"
|
- "Move #42 to ready-for-agent"
|
||||||
- "What's ready for agents to pick up?"
|
- "What's ready for agents to pick up?"
|
||||||
|
|
||||||
@@ -57,24 +61,28 @@ Query the issue tracker and present three buckets, oldest first:
|
|||||||
2. **`needs-triage`** — evaluation in progress.
|
2. **`needs-triage`** — evaluation in progress.
|
||||||
3. **`needs-info` with reporter activity since the last triage notes** — needs re-evaluation.
|
3. **`needs-info` with reporter activity since the last triage notes** — needs re-evaluation.
|
||||||
|
|
||||||
Show counts and a one-line summary per issue. Let the maintainer pick.
|
When PRs are in scope, include external PRs in these buckets and tag each line `[PR]` or `[issue]`. Discovery surfaces only *external* PRs (the tracker config defines who counts as external) — a collaborator's in-flight PR is not triage work. This filter is discovery-only; an explicitly named PR is always triaged regardless of author.
|
||||||
|
|
||||||
## Triage a specific issue
|
Show counts and a one-line summary per item. Let the maintainer pick.
|
||||||
|
|
||||||
1. **Gather context.** Read the full issue (body, comments, labels, reporter, dates). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Read `.out-of-scope/*.md` and surface any prior rejection that resembles this issue.
|
## Triage a specific issue or PR
|
||||||
|
|
||||||
2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the issue. Wait for direction.
|
1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy** — search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection** — read `.out-of-scope/*.md` and surface any that resembles this request.
|
||||||
|
|
||||||
3. **Reproduce (bugs only).** Before any grilling, attempt reproduction: read the reporter's steps, trace the relevant code, run tests or commands. Report what happened — successful repro with code path, failed repro, or insufficient detail (a strong `needs-info` signal). A confirmed repro makes a much stronger agent brief.
|
2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request — including whether it's already implemented. Wait for direction.
|
||||||
|
|
||||||
4. **Grill (if needed).** If the issue needs fleshing out, run the `/grilling` and `/domain-modeling` skills together — grill the issue into shape one question at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
|
3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims — check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.
|
||||||
|
|
||||||
|
4. **Grill (if needed).** If the request needs fleshing out, run the `/grilling` and `/domain-modeling` skills together — grill it into shape one question at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
|
||||||
|
|
||||||
5. **Apply the outcome:**
|
5. **Apply the outcome:**
|
||||||
- `ready-for-agent` — post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).
|
- `ready-for-agent` — post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).
|
||||||
- `ready-for-human` — same structure as an agent brief, but note why it can't be delegated (judgment calls, external access, design decisions, manual testing).
|
- `ready-for-human` — same structure as an agent brief, but note why it can't be delegated (judgment calls, external access, design decisions, manual testing).
|
||||||
- `needs-info` — post triage notes (template below).
|
- `needs-info` — post triage notes (template below).
|
||||||
- `wontfix` (bug) — polite explanation, then close.
|
- `wontfix` — close, with the comment depending on *why*:
|
||||||
- `wontfix` (enhancement) — write to `.out-of-scope/`, link to it from a comment, then close ([OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)).
|
- **Already implemented** — the change already exists in the codebase. Point to where it lives; do **not** write to `.out-of-scope/` (that KB is for *rejected* requests, not built ones).
|
||||||
|
- **Rejected (bug)** — polite explanation, then close.
|
||||||
|
- **Rejected (enhancement)** — write to `.out-of-scope/`, link to it from a comment, then close ([OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)).
|
||||||
- `needs-triage` — apply the role. Optional comment if there's partial progress.
|
- `needs-triage` — apply the role. Optional comment if there's partial progress.
|
||||||
|
|
||||||
## Quick state override
|
## Quick state override
|
||||||
@@ -101,4 +109,4 @@ Capture everything resolved during grilling under "established so far" so the wo
|
|||||||
|
|
||||||
## Resuming a previous session
|
## Resuming a previous session
|
||||||
|
|
||||||
If prior triage notes exist on the issue, read them, check whether the reporter has answered any outstanding questions, and present an updated picture before continuing. Don't re-ask resolved questions.
|
If prior triage notes exist on the issue or PR, read them, check whether the reporter has answered any outstanding questions, and present an updated picture before continuing. Don't re-ask resolved questions.
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ Treat the current directory as a teaching workspace. The state of their learning
|
|||||||
- `RESOURCES.md`: A list of resources which can be explored to ground your teaching in contextual knowledge, or to acquire knowledge and wisdom. Use the format in [RESOURCES-FORMAT.md](./RESOURCES-FORMAT.md).
|
- `RESOURCES.md`: A list of resources which can be explored to ground your teaching in contextual knowledge, or to acquire knowledge and wisdom. Use the format in [RESOURCES-FORMAT.md](./RESOURCES-FORMAT.md).
|
||||||
- `./learning-records/*.md`: A directory of learning records, which capture what the user has learned. These are loosely equivalent to architectural decision records in software development - they capture non-obvious lessons and key insights that may need to be revised later, or drive future sessions. These should be used to calculate the zone of proximal development. They are titled `0001-<dash-case-name>.md`, where the number increments each time. Use the format in [LEARNING-RECORD-FORMAT.md](./LEARNING-RECORD-FORMAT.md).
|
- `./learning-records/*.md`: A directory of learning records, which capture what the user has learned. These are loosely equivalent to architectural decision records in software development - they capture non-obvious lessons and key insights that may need to be revised later, or drive future sessions. These should be used to calculate the zone of proximal development. They are titled `0001-<dash-case-name>.md`, where the number increments each time. Use the format in [LEARNING-RECORD-FORMAT.md](./LEARNING-RECORD-FORMAT.md).
|
||||||
- `./lessons/*.html`: A directory of lessons. A **lesson** is a single, self-contained HTML output that teaches one tightly-scoped thing tied to the mission. This is the primary unit of teaching in this workspace.
|
- `./lessons/*.html`: A directory of lessons. A **lesson** is a single, self-contained HTML output that teaches one tightly-scoped thing tied to the mission. This is the primary unit of teaching in this workspace.
|
||||||
|
- `./assets/*`: Reusable **components** shared across lessons. See [Assets](#assets).
|
||||||
- `NOTES.md`: A scratchpad for you to jot down user preferences, or working notes.
|
- `NOTES.md`: A scratchpad for you to jot down user preferences, or working notes.
|
||||||
|
|
||||||
## Philosophy
|
## Philosophy
|
||||||
@@ -59,6 +60,14 @@ Each lesson should recommend a primary source for the user to read or watch. Thi
|
|||||||
|
|
||||||
Each lesson should contain a reminder to ask followup questions to the agent. The agent is their teacher, and can assist with anything that's unclear.
|
Each lesson should contain a reminder to ask followup questions to the agent. The agent is their teacher, and can assist with anything that's unclear.
|
||||||
|
|
||||||
|
## Assets
|
||||||
|
|
||||||
|
Lessons are built from reusable **components**, stored in `./assets/`: stylesheets, quiz widgets, simulators, diagram helpers — anything a second lesson could reuse.
|
||||||
|
|
||||||
|
Reuse is the default, not the exception. Before authoring a lesson, read `./assets/` and build from the components already there. When a lesson needs something new and reusable, write it as a component in `./assets/` and link to it — never inline code a future lesson would duplicate.
|
||||||
|
|
||||||
|
A shared stylesheet is the first component every workspace earns: every lesson links it, so the lessons look like one consistent course rather than a pile of one-offs. As the workspace grows, so should the component library.
|
||||||
|
|
||||||
## The Mission
|
## The Mission
|
||||||
|
|
||||||
Every lesson should be tied into the mission - the reason that the user is interested in learning about the topic.
|
Every lesson should be tied into the mission - the reason that the user is interested in learning about the topic.
|
||||||
|
|||||||
Reference in New Issue
Block a user