swe-workflow-skills 0.11.3 → 0.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.3
1
+ 0.11.5
package/catalog.json CHANGED
@@ -103,7 +103,7 @@
103
103
  },
104
104
  {
105
105
  "name": "dependency-management",
106
- "description": "Evaluate, audit, and upgrade project dependencies — assess libraries before adoption, audit CVEs, plan major upgrades, resolve conflicts. Triggers: should I use this library, npm audit, upgrade dependencies, dependency vulnerability, outdated packages, evaluate this package, is this library maintained, dependency conflict, lock file, breaking changes in upgrade, slopsquatting, package hallucination, does this package exist, verify package name, AI suggested this library.",
106
+ "description": "Evaluate, audit, and upgrade dependencies — whether a library is needed at all or an own module beats it, adoption vetting, CVE audits, major upgrades, conflicts. Run before naming any new library in a plan, ADR or install. Triggers: should I use this library, which packages do we need, write our own instead, we use a small part of it, npm audit, dependency vulnerability, upgrade dependencies, outdated packages, lock file, breaking changes in upgrade, is this library maintained, dependency conflict, slopsquatting, does this package exist, AI suggested this library.",
107
107
  "path": "dependency-management/SKILL.md"
108
108
  },
109
109
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swe-workflow-skills",
3
- "version": "0.11.3",
3
+ "version": "0.11.5",
4
4
  "description": "A curated library of Claude Code Agent Skills covering the full software lifecycle, with orchestrator-routed activation that scales past the skill-listing budget.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -70,6 +70,7 @@ Present 2-4 viable options. For each option:
70
70
  3. **Analyze trade-offs** against the quality attributes identified in Step 2
71
71
  4. **Estimate complexity** (implementation effort, operational overhead)
72
72
  5. **Identify reversibility** — how hard is it to change this decision later?
73
+ 6. **Name any new library it brings in**, with `dependency-management`'s Step 1 verdict (own module, adopt, or ask the user) in the option itself. The ADR records why each library is worth the coupling.
73
74
 
74
75
  Avoid presenting a straw-man option just to make the preferred one look better.
75
76
 
@@ -72,6 +72,7 @@ Flag when you see:
72
72
  - Shared mutable state between components
73
73
  - Functions that require knowledge of the caller's context
74
74
  - Temporal coupling (function A must be called before function B with nothing enforcing this)
75
+ - A new entry in a dependency manifest with no recorded reason, or one used for a sliver of what it ships (see `dependency-management` Step 1)
75
76
 
76
77
  ## Security Checklist
77
78
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: dependency-management
3
- description: "Evaluate, audit, and upgrade project dependencies — assess libraries before adoption, audit CVEs, plan major upgrades, resolve conflicts."
4
- when_to_use: "Triggers: should I use this library, npm audit, upgrade dependencies, dependency vulnerability, outdated packages, evaluate this package, is this library maintained, dependency conflict, lock file, breaking changes in upgrade, slopsquatting, package hallucination, does this package exist, verify package name, AI suggested this library."
3
+ description: "Evaluate, audit, and upgrade dependencies — whether a library is needed at all or an own module beats it, adoption vetting, CVE audits, major upgrades, conflicts. Run before naming any new library in a plan, ADR or install."
4
+ when_to_use: "Triggers: should I use this library, which packages do we need, write our own instead, we use a small part of it, npm audit, dependency vulnerability, upgrade dependencies, outdated packages, lock file, breaking changes in upgrade, is this library maintained, dependency conflict, slopsquatting, does this package exist, AI suggested this library."
5
5
  ---
6
6
 
7
7
  # Dependency Management
@@ -16,13 +16,28 @@ Help make disciplined decisions about project dependencies. Every dependency is
16
16
 
17
17
  ### Step 1: Do You Need It?
18
18
 
19
- Before evaluating any library, check if the need can be met without one:
19
+ Run this for every library you are about to name: one the user asks about, and one you are about to put in a plan, an ADR, or an install command. A candidate list someone hands you (an ADR, a plan, a teammate's pick) is the input to this step, not its result. Compare each candidate with **an own module**, not only with other libraries. Checking that a package exists and is maintained (Steps 2–3) does not answer whether you need it.
20
20
 
21
- - **Is this a few lines of code?** Writing `leftPad` yourself is better than importing it.
22
- - **Does the language/framework already provide this?** Check built-in APIs first.
23
- - **Is this a one-time use?** Copy-paste a small utility function instead of adding a dependency.
21
+ For each candidate, fill one row:
24
22
 
25
- A dependency is justified when it provides substantial, maintained functionality that would be costly and error-prone to build yourself (e.g., cryptography, date handling with timezones, database drivers, authentication).
23
+ | Field | What to write |
24
+ |---|---|
25
+ | **Used** | The functions or features we would call, against what it ships |
26
+ | **Pulls in** | Transitive packages, native builds, and maintainer groups (count groups, not packages) |
27
+ | **Already covered** | By the standard library, the platform, or a dependency we already have |
28
+ | **Own module** | What it would be, rough line count, and how it is tested |
29
+ | **Grows into** | Planned features (roadmap, PRD, open issues) that would use more of it. An own module that would have to regrow the library is not small |
30
+ | **Gives beyond code** | Portability, an abstraction, spec conformance, a security track record. Check the claim: one vendor's SDK is not an abstraction over many vendors |
31
+
32
+ Then give each row a verdict:
33
+
34
+ - **Own module, or nothing:** we'd use a sliver of it, the own module is small, and nothing planned grows it. Same when the standard library or a current dependency already covers it.
35
+ - **Adopt:** we'd use a substantial part of it, or correctness is specialized and costly to get right (cryptographic primitives, timezone math, database drivers, a parser for hostile input). Continue to Steps 2–4.
36
+ - **Ask the user:** the rows don't decide it. That covers a mid-size own module, security-critical code, or a call that hinges on the roadmap or on how much code the team is willing to maintain, which you can't see. Present both options with your recommendation and what each costs, and get the user's choice before installing the library or writing the module. This is not a gate on the rest of the answer: deliver the table and the other verdicts in the same response, with the question beside them.
37
+
38
+ **Security-critical code:** never write your own cryptographic primitives. Thin protocol code over a crypto library you already ship can be owned, for example TOTP, a request signer, or a WebAuthn check that only accepts `none` attestation. Own it only when the user chooses to (ask), with a test per spec step, and with differential tests against the library kept as a dev-only dependency.
39
+
40
+ **Exit condition:** the table with a verdict per row, in the same response. Steps 2–4 apply only to rows marked Adopt.
26
41
 
27
42
  ### Step 2: Verify the Package Exists (anti-slopsquatting)
28
43
 
@@ -60,7 +75,7 @@ For any library under consideration, assess these dimensions:
60
75
  - Does it have excessive transitive dependencies?
61
76
 
62
77
  **Alternatives comparison:**
63
- - Identify 2-3 alternatives and compare on the dimensions above
78
+ - Identify 2-3 alternatives, including Step 1's own module, and compare on the dimensions above
64
79
  - A slightly less popular library that's better maintained may be the better choice
65
80
 
66
81
  See [references/evaluation-checklist.md](references/evaluation-checklist.md) for the structured assessment template.
@@ -68,10 +83,10 @@ See [references/evaluation-checklist.md](references/evaluation-checklist.md) for
68
83
  ### Step 4: Present the Recommendation
69
84
 
70
85
  For the user, summarize:
71
- - **Recommendation**: Use / Don't use / Consider alternative
86
+ - **Recommendation**: Use / Own module / Don't use / Consider alternative. When Step 1 marked the row Ask the user, give your recommendation and ask; don't install until they answer
72
87
  - **Primary reason**: The most compelling argument
73
88
  - **Risks accepted**: What you're trading off
74
- - **Alternatives considered**: Brief comparison
89
+ - **Alternatives considered**: when you compare two or more libraries, a table with one column per candidate covering the Step 3 dimensions. Give numbers: bundle or install size, transitive dependency count, weekly downloads. Then show the same small task (one schema, one call) written in each library, so the ergonomics can be compared rather than asserted
75
90
 
76
91
  ## Workflow: Auditing Existing Dependencies
77
92
 
@@ -100,7 +115,7 @@ bundle audit check --update
100
115
  Not all vulnerabilities require action. For each finding:
101
116
 
102
117
  1. **Is the vulnerable code path actually used in your project?** Many CVEs affect specific features you may not use.
103
- 2. **What's the severity?** Critical and High need immediate action. Medium within a sprint. Low can be tracked.
118
+ 2. **What's the severity?** Start with Critical and High, which need immediate action. Many Moderate and Low findings sit in dev-only tooling or in code paths you never call. Those are acceptable risk: say so, record the decision with its reason, and recheck at the next upgrade instead of fixing everything. Fix the rest of the Moderate findings within a sprint.
104
119
  3. **Is a patched version available?** If yes, upgrade. If no, assess mitigation or replacement.
105
120
  4. **Is it a transitive dependency?** You may need to upgrade the parent package, or use overrides/resolutions.
106
121
 
@@ -119,9 +134,11 @@ vulture src/ --min-confidence 80
119
134
 
120
135
  Remove unused dependencies. If unsure, comment it out, run tests, and deploy to staging.
121
136
 
137
+ Then run Step 1's table on each remaining direct dependency to find the ones used for only a sliver. Fill **Grows into** before proposing a replacement: a library we use lightly today can be the right choice for a feature on the roadmap.
138
+
122
139
  ### Step 4: Produce the Report
123
140
 
124
- Summarize: N vulnerabilities found (X critical, Y high), N unused packages, N significantly outdated.
141
+ Summarize: N vulnerabilities found (X critical, Y high), N unused packages, N used for a sliver (with own-module alternatives and sizes), N significantly outdated.
125
142
 
126
143
  ## Workflow: Major Version Upgrades
127
144
 
@@ -139,8 +156,9 @@ For low-risk upgrades (well-documented, small surface area):
139
156
  - Create a branch, bump the version, run tests, fix failures.
140
157
 
141
158
  For high-risk upgrades (framework major version, ORM, auth library):
159
+ - Before starting, make sure the tests cover the surface the upgrade touches. Write characterization tests where coverage is thin, because the suite is how you will know the upgrade broke nothing
142
160
  - Create a detailed task list of changes needed
143
- - Test in isolation first if possible
161
+ - Changes that work on both the old and the new version can merge to main as they land. The version bump itself runs in isolation (a branch through the full suite, then staging) before it merges
144
162
  - Consider running old and new versions in parallel temporarily (expand-contract)
145
163
  - Suggest using the `feature-planning` skill to break the upgrade into tasks
146
164
 
@@ -35,7 +35,7 @@
35
35
  "expected_output": "Should recommend a phased approach (17→18→19), identify the major breaking changes at each step, suggest using the feature-planning skill to break this into tasks, and warn about class component and legacy API issues.",
36
36
  "assertions": [
37
37
  "Recommends incremental upgrade (17→18 first, then 18→19), not direct 17→19",
38
- "Identifies class components and legacy context as migration blockers",
38
+ "Identifies legacy context as a migration blocker, and treats class components as still supported, flagging only their removed APIs (such as string refs and legacy lifecycles)",
39
39
  "Lists the key breaking changes at each major version boundary",
40
40
  "Suggests codemods for automated migration where available",
41
41
  "Recommends comprehensive test coverage before starting",
@@ -44,5 +44,39 @@
44
44
  "Recommends testing in isolation before merging to main"
45
45
  ]
46
46
  }
47
+ ],
48
+ "pressure_tests": [
49
+ {
50
+ "id": 1,
51
+ "prompt": "Our accepted ADR for a small Python 3.12 CLI that indexes a folder of Markdown notes already picked these: watchdog (re-index when files change), rapidfuzz (fuzzy search over about 2,000 note titles), PyYAML (read the `title` and `tags` keys from frontmatter), python-dateutil (parse the ISO-8601 `date` key in frontmatter), and click (a CLI with four subcommands). The next milestone on our roadmap adds editing all frontmatter fields from the CLI. The ADR is accepted, so just vet these before we install them: check that they exist, their licences and their maintenance.",
52
+ "pressure": [
53
+ "authority",
54
+ "sunk cost"
55
+ ],
56
+ "expected_behavior": "Treats the ADR's list as input to Step 1, not as settled: compares each library with an own module or the standard library before (or alongside) the requested existence, licence and maintenance checks. Drops what the standard library already covers, keeps what the roadmap will grow into, and asks the user on the calls the table does not decide. Still delivers the vetting for the libraries it keeps, in the same response.",
57
+ "assertions": [
58
+ "Checks for each candidate what the CLI would use against what the library ships, or names the standard-library or own-module alternative, rather than only checking existence, licence and maintenance",
59
+ "Notes that the standard library already parses ISO-8601 dates (datetime.fromisoformat), so python-dateutil is not needed",
60
+ "Weighs the standard library's argparse against click for four subcommands",
61
+ "Keeps PyYAML, or flags it to keep, because the roadmap's frontmatter editing will use more of it, rather than proposing a hand-written YAML parser",
62
+ "For at least one candidate whose verdict is unclear, gives a recommendation and asks the user to choose before installing",
63
+ "Still delivers the requested vetting for the libraries it keeps, in the same response"
64
+ ]
65
+ },
66
+ {
67
+ "id": 2,
68
+ "prompt": "Add passkey (WebAuthn) sign-in as the second factor for admins in our Flask app. We only need `none` attestation, because we don't care which device made the key. We already depend on `cryptography`. Pick the libraries and give me the implementation plan, and keep it quick.",
69
+ "pressure": [
70
+ "time"
71
+ ],
72
+ "expected_behavior": "Weighs adopting a WebAuthn library against owning a small verifier for only the `none`-attestation checks, built on the `cryptography` dependency already present. Never proposes writing its own cryptographic primitive. Because the verifier is security-critical code and the call is close, it gives a recommendation and asks the user to choose, and still delivers the implementation plan in the same response. If the verifier is owned, each spec step gets a test and the library stays as a dev-only dependency to cross-check it.",
73
+ "assertions": [
74
+ "Weighs adopting a WebAuthn library (what we would use of it and what it pulls in) against owning a verifier for only the `none`-attestation checks built on `cryptography`, rather than picking either unexamined",
75
+ "Does not propose writing its own signature verification, hash or any other cryptographic primitive; signatures are verified with `cryptography` or the library",
76
+ "Asks the user to choose between owning the verifier and adopting the library, with a recommendation, because the code is security-critical",
77
+ "Delivers the implementation plan in the same response rather than stopping at the question",
78
+ "If the verifier is owned, tests each verification step of the spec and cross-checks it against the library kept as a dev-only dependency"
79
+ ]
80
+ }
47
81
  ]
48
82
  }
@@ -18,6 +18,15 @@ Use this template when evaluating a library for adoption:
18
18
  **Alternative to**: [What we're using now, or "nothing — new capability"]
19
19
  **Evaluated on**: [Date]
20
20
 
21
+ ### Necessity (Step 1)
22
+ - Used: [functions/features we call] of [what it ships]
23
+ - Pulls in: [transitive packages, native builds, maintainer groups]
24
+ - Already covered by: [stdlib / platform / existing dependency / nothing]
25
+ - Own module: [what, ~lines, how tested]
26
+ - Grows into: [planned features that would use more of it, or "none known"]
27
+ - Gives beyond code: [portability, abstraction, spec conformance, security record, checked]
28
+ - Verdict: [Own module / Adopt / Ask the user (question asked)]
29
+
21
30
  ### Maintenance Health
22
31
  - Last release: [date]
23
32
  - Commits in last 6 months: [number]
@@ -67,6 +67,8 @@ Decompose the feature into implementation tasks. Each task should:
67
67
 
68
68
  Use this structure for each task — see [templates/task.md](templates/task.md).
69
69
 
70
+ When a task adds a library, run `dependency-management`'s Step 1 on it before writing the task, and put the verdict in the plan's **New dependencies** section: own module, adopt, or a question for the user. A plan that lists a library with only a check that it exists hasn't done this.
71
+
70
72
  ### Step 4: Map Dependencies
71
73
 
72
74
  Identify and visualize dependencies between tasks:
@@ -32,6 +32,12 @@
32
32
 
33
33
  [Ordered list of tasks using the task template]
34
34
 
35
+ ## New Dependencies
36
+
37
+ | Library | What we use | Verdict (own module / adopt / ask) | Why it earns its place |
38
+ |---------|-------------|------------------------------------|------------------------|
39
+ | [name, or "none"] | [functions/features] | [verdict] | [reason, or the question for the user] |
40
+
35
41
  ## Dependency Map
36
42
 
37
43
  ```
@@ -171,6 +171,7 @@ Use [templates/folder-structure.md](templates/folder-structure.md) as a starting
171
171
  - [ ] Are components reusable without bringing business logic along?
172
172
  - [ ] Is there one clear way to do common tasks (fetching, forms, navigation)?
173
173
  - [ ] Are design tokens used consistently (no hardcoded values)?
174
+ - [ ] Does every library this design adds (state, fetching, routing, UI kit) carry `dependency-management`'s Step 1 verdict: own module, adopt, or ask the user?
174
175
 
175
176
  ## Principles Applied
176
177
 
@@ -57,6 +57,8 @@ an extra task, a skipped step, a surprise — goes into a **drift log** the mome
57
57
  it happens, even when the deviation is an improvement. Undocumented "better
58
58
  ideas" are how a plan dies without anyone deciding to kill it.
59
59
 
60
+ Installing a library the plan doesn't list is drift too. Stop before the install, run `dependency-management`'s Step 1 on it, and ask the user unless the verdict is clear.
61
+
60
62
  When a task needs a human — a review, an approval, field data — first do every
61
63
  part you can do yourself, then hand over a runbook: what is needed, where the
62
64
  data is, what to run, what to look for, and what to send back.
@@ -109,18 +109,24 @@ Write findings at the strength the evidence has:
109
109
 
110
110
  **Write each artifact for a reader who wasn't in the session.** An experiment
111
111
  README, a results section or a method record is read later by the project owner,
112
- with nothing else open:
112
+ with nothing else open, and must make the work clear without the notebook or the
113
+ code:
113
114
  - **Open with what was found, in plain words**, and what it changes. Provenance
114
- (commit, data version, settings) follows the summary; it doesn't lead.
115
+ (commit, data version) follows the summary; it doesn't lead.
116
+ - **Say what was run**, in a few lines: what it modelled or predicted, on which
117
+ data, the method and its settings (algorithm, hyperparameters, thresholds), and
118
+ why that method, with a link to its method decision record. Metrics without the
119
+ run behind them can't be read. If the material doesn't say, ask; don't leave it out.
115
120
  - **Keep each question, its result and what it means for the project together**,
116
121
  in the same row or paragraph, not a table followed by a separate list of
117
122
  implications.
118
- - **Define every term and abbreviation where the document uses it**, even when a
119
- glossary exists. The glossary is an extra reference, not a substitute, and a
120
- definition repeated here is not duplication to remove. A label you can't define
121
- (a step code, a decision named by date) is asked about, not left raw.
122
- - **Revising a dense document adds explanation; it never cuts.** Pre-registered
123
- text stays verbatim.
123
+ - **Link shared vocabulary; spell out the rest.** Glossary terms, the methodology
124
+ and other project-wide definitions have one home: link to it rather than
125
+ restating it. Shorthand with no home (a notebook symbol, a step code, a decision
126
+ named by date) is written out, or asked about.
127
+ - **Revising a dense document adds what the work is missing.** Replacing a
128
+ repeated definition with a link is fine; cutting what was done or what it means
129
+ is not. Pre-registered text stays verbatim.
124
130
  - Don't add qualifiers the output doesn't carry, such as a CI level or a test name.
125
131
 
126
132
  Under deadline, write the supported part now and mark the rest provisional. The
@@ -56,16 +56,17 @@
56
56
  },
57
57
  {
58
58
  "id": 2,
59
- "prompt": "Write the Results section of experiments/AE04_matching/README.md from my notebook output below. The project owner reads these between other work and wasn't in the session. Terms are already in docs/glossary.md, so keep it tight.\n\nPre-registered: H1 R@50m >= 0.65 on closed parajes; H2 adding MS to G raises precision by >= 3 pp; H3 eps 100 keeps towns out of HS.\nOutput:\n- H1: R@50m = 0.71 [0.66, 0.76], n_cp = 41 -> supp\n- H2: dPrec(MS u G - G) = +2.1 pp [-0.4, 4.6] -> inconcl\n- H3: eps 100 merges M-masked towns into 39 HS -> not supp; A.7 pending\n- l = 225 m (grid), imposib. excluded per 2026-10-22",
59
+ "prompt": "Write the Results section of experiments/AE04_matching/README.md from my notebook output below. The project owner reads these between other work and wasn't in the session. Terms are already in docs/glossary.md, so keep it tight.\n\nPre-registered: H1 R@50m >= 0.65 on closed parajes; H2 adding MS to G raises precision by >= 3 pp; H3 eps 100 keeps towns out of HS.\nConfig: match=hungarian, max_d=50; clust=DBSCAN(eps=100, min_samples=4); inputs=G, MS (2025-Q3); ref=survey_2024 (1,779 HH); see MDR-0007\nOutput:\n- H1: R@50m = 0.71 [0.66, 0.76], n_cp = 41 -> supp\n- H2: dPrec(MS u G - G) = +2.1 pp [-0.4, 4.6] -> inconcl\n- H3: eps 100 merges M-masked towns into 39 HS -> not supp; A.7 pending\n- l = 225 m (grid), imposib. excluded per 2026-10-22",
60
60
  "pressure": [
61
61
  "brevity",
62
62
  "glossary_exists"
63
63
  ],
64
- "expected_behavior": "Writes the section for a reader who was not in the session: a plain-language summary of what was found first, then each hypothesis with its question, result and meaning for the project together, defining the shorthand where it is used even though a glossary exists, and reporting the inconclusive result as inconclusive with the numbers exactly as given. Recorded from a real project where results written as session shorthand had to be rewritten because the owner could not follow them; without guidance, replies put implications in a separate list and lean on the glossary link.",
64
+ "expected_behavior": "Writes the section for a reader who was not in the session: a plain-language summary of what was found first; a few lines on what was run (the matching and clustering methods with their settings, the inputs and the reference data, the method's reason linked to its MDR); then each hypothesis with its question, result and meaning for the project together. Shared terms point to the glossary instead of being redefined, while shorthand no shared document defines is written out or flagged. The inconclusive result is reported as inconclusive with the numbers exactly as given. Recorded from a real project where results written as metrics and session shorthand, with no word on the model run behind them, had to be rewritten because the owner could not follow them.",
65
65
  "assertions": [
66
66
  "Opens with a short plain-language summary of what was found, before the per-hypothesis detail",
67
+ "Says in a few plain lines what was run (the matching and clustering methods with their settings, the inputs and the reference data) and links the method's reason to MDR-0007, rather than reporting only the metrics",
67
68
  "For each hypothesis, states the question asked, the result, and what it means for the project, next to each other",
68
- "Explains the shorthand where it is used (e.g. R@50m, pp, closed parajes, HS, M, A.7, eps) instead of relying only on the glossary link",
69
+ "Points shared terms to the glossary rather than redefining them, and writes out or flags the shorthand no shared document defines (A.7, the 2026-10-22 decision)",
69
70
  "Reports H2 as inconclusive, not as an effect, and keeps every number as given without inventing values"
70
71
  ]
71
72
  },
@@ -75,12 +76,13 @@
75
76
  "pressure": [
76
77
  "dry_instinct"
77
78
  ],
78
- "expected_behavior": "Treats the complaint as too little explanation, not too much text: adds a plain summary and the meaning of each result, keeps definitions inside the README rather than moving them to the glossary, puts each question next to its answer, and leaves the pre-registration verbatim. Recorded from a real project where the first fix moved definitions out to a glossary and the owner objected that the document had been trimmed further.",
79
+ "expected_behavior": "Treats the complaint as too little explanation of the work, not too much text: adds a plain summary, what the experiment ran (data, method and settings, what it set out to measure) and the meaning of each result, puts each question next to its answer, and leaves the pre-registration verbatim. Shared terms stay in the glossary and are linked, not copied in. Recorded from a real project where the owner could not follow results given as numbers and acronyms with no account of the run behind them.",
79
80
  "assertions": [
80
81
  "Adds explanation (a plain summary, what each result means) rather than shortening or cutting content",
81
- "Keeps or adds definitions of terms inside the README itself rather than moving them out to the glossary",
82
+ "Adds, or asks for, what the experiment ran (the data, the method and its settings, what it set out to measure) so the README can be followed without the notebook",
82
83
  "Puts each question next to its answer and its meaning",
83
- "Leaves the pre-registration unchanged, or states that it must stay verbatim, while restructuring around it"
84
+ "Leaves the pre-registration unchanged, or states that it must stay verbatim, while restructuring around it",
85
+ "Treats docs/glossary.md as the home for shared terms, linking to it rather than adding a second definition in the README"
84
86
  ]
85
87
  }
86
88
  ]
@@ -50,6 +50,11 @@ config edits, dependency bumps) and anything that matches a specific skill's
50
50
  domain (accessibility, API design, security, data modeling, migrations,
51
51
  performance…) are exactly what the skills are for. When in doubt, route.
52
52
 
53
+ **Naming a new library is a routing point**, even mid-plan or mid-build and even
54
+ when nobody asked about dependencies. Invoke `dependency-management` before the
55
+ library goes into a plan, an ADR, or an install command. Its first question is
56
+ whether you need the library at all.
57
+
53
58
  Skip **only** for genuinely trivial, conversational, or information-lookup
54
59
  requests where no workflow adds value, or when the user tells you not to use a
55
60
  skill or to "just do X". **The user's explicit instructions always take
@@ -114,7 +119,7 @@ installed skill by name, regardless of role.
114
119
  - **compliance-privacy** — GDPR/SOC 2 obligations: data mapping, retention/deletion, DSRs, controls
115
120
  - **configuration-strategy** — env config, secrets management, feature-flag hierarchy
116
121
  - **dependency-impact-analysis** — blast radius of a change *before* implementing
117
- - **dependency-management** — evaluate, audit (CVEs), and upgrade libraries
122
+ - **dependency-management** — whether a library is needed at all vs an own module; evaluate, audit (CVEs), and upgrade libraries
118
123
 
119
124
  ### Build & Test
120
125
  - **plan-execution** — execute an APPROVED plan: checkpoints, verification evidence, drift → re-plan