64 Commits

Author SHA1 Message Date
Ihor Orlovskyi 74513851d7 Small fixes across nineteen skills (v1.39.0) (#66)
* fix(git-worktree-isolation): canonicalize workspace_root and drop stale helper wording

* fix(review-request): use one UNASSESSED literal across all verdicts

* docs(web-debug): align heading with skill name and gate Playwright install

* fix(branch-finish): separate cleanup status from outcome labels

* docs(parallel-agents): drop agent-count anchor next to the no-hardcoding rule

* docs(typescript): mark Python optional for helper scripts

* docs(vitest): mark Python optional and name the tdd boundary

* docs(echarts): use project package manager and name the debugging boundary

* fix(commit-all): detect the default branch instead of assuming main or master

* docs(frontend-crafting): name the debugging boundary for unexpected UI behavior

* docs(tdd): name verification-gate as completion owner and narrow the trigger

* feat(debugging): record symptom provenance explicitly in step 0

* docs(scope-triage): verify compatibility in the repo before asking in Route B

* refactor: narrow trigger boundaries for dashfix, negafix, and maintaining-agent-context

* fix(skill-crafting): require a should-not-trigger case and shorten the description

* feat(plan-dev): report plan progress as a counted status line

* docs: record the small-fixes release across skills

* docs: adopt the single-table skill index and record the 1.39.0 release

Take README.md from docs/readme-ascii-workflow, which merges the four skill
tables into one and reorders the install commands, then re-apply the version
bumps for the nineteen skills changed on this branch and set their Release
column to v1.39.0.

* docs: describe skill-crafting by what the skill does

The README row carried the eval package's summary instead of the skill's own
purpose; align it with the frontmatter description.

* revert(skill-crafting): restore the measured description

The trigger-eval run of 2026-09-16 shows the shortened description loses four
positive cases that the previous one routed correctly (7/8 to 4/8 on cases clean
in both arms), with no reduction in false positives. Per the plan's acceptance
criterion a drop rolls the edit back, so line 3 returns to the measured baseline.

The should-not-trigger requirement from the same task is behavior the run did not
contest and stays in place, so 1.1.1 keeps a real package change. The skill and
root changelogs drop their claims about the shortening.

* docs: date the 1.39.0 release entry to its release day
v1.39.0
2026-09-16 05:50:09 +03:00
Ihor Orlovskyi 5ea8784950 Add skill-crafting 1.1.0 (#64)
* Add skill-crafting public package

- add the methodology skill, evaluation reference, provenance, and license
- register the skill in README, changelog, and package registries
- document the expected security-scan baseline

* feat(skill-crafting): define portable eval contract

* feat(skill-crafting): widen description to own craft decisions

Name the craft decisions the skill owns, route skill-creator to its runner
and description mechanics only, and point instruction-architecture, planning
and code-fix requests at their owners. Drop a trailing blank line.

* fix(skill-crafting): reject unsafe fixture option values

* feat(skill-crafting): add fresh-sandbox eval runner

* fix(skill-crafting): enforce baseline fixture isolation

* fix(skill-crafting): harden eval sandbox isolation

* feat(skill-crafting): add deterministic eval aggregation

* fix(skill-crafting): harden eval aggregation

* feat(skill-crafting): own portable eval execution

* fix(skill-crafting): harden trigger boundary

* chore: prepare skill-crafting 1.1.0 release metadata
v1.38.0
2026-09-15 13:42:49 +03:00
Ihor Orlovskyi 99067ef6a5 Rename worktree-isolation to git-worktree-isolation (#63)
The name now says which mechanism the workflow reaches for most often. Nothing about
the selection hierarchy changes: section 4 still ranks reusing existing safe isolation
first, a harness-native workspace second, a manual Git worktree third, and safe work in
place remains a legitimate outcome. The paragraph that introduces the skill says so
against the stronger name, so a run ending without a worktree still reads as complete.

Eight referencing skills follow the rename, both registries move with the directory,
and the frozen changelog entries from v1.35.0 keep the previous name as the historical
record.
v1.36.0
2026-09-14 06:28:17 +03:00
Ihor Orlovskyi 653708e513 Rename workspace-isolation to worktree-isolation and timestamp spec and plan names (#62)
The skill keeps its full scope: the name states the mechanism it reaches for most
often, while existing isolated checkouts, harness-native workspaces, containers and
safe work in place stay equally valid outcomes. The sentence that called the skill
"not a Git worktree tutorial" would have read as a denial of its own name and now
states the same boundary positively.

Eight skills that reference it follow the rename, registry entries in skills.sh.json
and marketplace.json move with the directory, and frozen changelog entries keep the
old name as the historical record it is.

Separately, scope-triage and plan-crafting now save specs and plans as
`YYYYMMDD-HHMM-<topic>.md`, matching docs/feedbacks, so several documents written on
one day order by creation time. The `-design` suffix is dropped as redundant.
v1.35.0
2026-09-14 06:12:52 +03:00
Ihor Orlovskyi 14583c91e8 Unify the Security Model section across all skills (#61)
Every skill documents a Security Model section with the same four components: user-controlled inputs, untrusted inputs, tool output treated as data rather than instructions, and whether the skill runs shell commands or network calls. Five skills gained a section, nine had theirs renamed or gathered from an existing rule, five had missing components filled in. Versions bumped in 19 skills. Release v1.34.3.
v1.34.3
2026-09-14 05:50:37 +03:00
Ihor Orlovskyi 736c5b79db Add fork maintainer copyright to plan-crafting and tdd LICENSE files (#60)
plan-crafting and tdd were the only two forks of obra/superpowers whose
LICENSE lacked the fork maintainer line alongside the upstream notice.
Both files are now byte-identical to the other ten forks; the upstream
copyright is preserved.

Bump plan-crafting to 1.3.1 and tdd to 1.0.3 as patch releases: the
change is non-behavioral, leaving triggers, descriptions and
responsibilities untouched.
v1.34.2
2026-09-14 04:23:30 +03:00
Ihor Orlovskyi 7171e3b742 Fix two report templates and the MERGE_BASE wording in branch-finish (#59)
* Fix two report templates and the MERGE_BASE wording in branch-finish

- Report Verification: <verdict> where the outcome does not require a PASS
- State that MERGE_BASE answers only with exactly one candidate branch

* Move the 1.34.1 changelog entry above 1.34.0

The repository changelog is strictly reverse-chronological, but the new
release section was inserted below 1.34.0. Reading the top entry is how
the release version is derived, so the misplaced section would have
yielded an already-tagged version.
v1.34.1
2026-09-14 00:00:03 +03:00
Ihor Orlovskyi 3079952b01 Document the development workflow and consolidate registry groups (#58)
Add a Development Workflow section to README.md that names scope-triage as the
entry point, diagrams the main flow and the failure path in Mermaid, and lists
the composability properties and conditional capabilities. Regroup the skill
table to match the registries and move the install block above it.

Consolidate skills.sh.json and .claude-plugin/marketplace.json from sixteen
groups to ten, replacing the single-skill groups the workflow chain created.
Every published skill still appears exactly once in each registry, and plugin
name values are preserved as install identity.

Bump scope-triage to 1.0.4: Route A now names tdd and debugging as backticked
skill references instead of bare words, so the handoff into implementation is
unambiguous. Routing semantics are unchanged.

Ignore .sdd/ so subagent-plan-dev state does not surface in release diffs.
v1.34.0
2026-09-13 18:18:07 +03:00
Ihor Orlovskyi 278c24a433 Fix stale upstream skill names in routing tables (#57)
- debugging 1.0.6: route a review finding with an unclear cause to review-resolution
  instead of the upstream receiving-code-review name.
- tdd 1.0.2: route root-cause investigation to debugging instead of the upstream
  systematic-debugging name, in three places.
- README.md, both skill CHANGELOGs and the repository CHANGELOG updated for v1.33.1.
v1.33.1
2026-09-13 16:53:58 +03:00
Ihor Orlovskyi 408bd3b6e4 Add branch-finish skill (#56)
Add the branch-finish skill 1.0.0, an integration and completion layer that
decides what happens to verified work and executes that decision safely, with
read-only environment detection, six-level base-branch resolution by evidence
precedence, four environment-filtered finish options, merge-conflict
classification, idempotent resumption, separate gates for workspace removal and
branch deletion, a seven-label outcome vocabulary, and a read-only state
inspector with its test.

Bump debugging to 1.0.5 so its routing table points at review-request and
branch-finish instead of the upstream requesting-code-review and
finishing-a-development-branch names.

Register the skill in a new Completion group in skills.sh.json and the mirrored
marketplace catalog, and record the release in README.md and the
repository-level CHANGELOG.md.
v1.33.0
2026-09-13 16:49:51 +03:00
Ihor Orlovskyi 5a3e6ba1d1 Add inline-plan-dev and subagent-plan-dev skills (#55)
Introduce two plan execution modes as a new Plan Execution registry group:

- inline-plan-dev 1.0.0: execute a plan inline in the current session, with
  plan-versus-reality reconciliation, a two-value blocker taxonomy, proportional
  verification depth, a deterministic scope check, and durable resume.
- subagent-plan-dev 1.0.0: execute a plan through scoped subagents under a
  controller, with per-task risk classification, controller-owned verification
  before acceptance, three-value review verdicts, and a four-step escalation
  ladder over plan-scoped state in .sdd/.

Route the existing skills at the new names:

- plan-crafting 1.2.0 -> 1.3.0
- tdd 1.0.0 -> 1.0.1
- debugging 1.0.3 -> 1.0.4

Also rebuild the known Snyk baseline findings table in AGENTS.md from a full
local pre-flight, and document the scanner's nondeterminism across runs.
v1.32.0
2026-09-13 15:35:51 +03:00
Ihor Orlovskyi 29550546f6 Fix the debugging version in the README skills table (#54)
The v1.31.0 release bumped debugging 1.0.2 to 1.0.3 in the skill's
metadata.version and CHANGELOG, but left the README table row at 1.0.2.
Update the row to 1.0.3 and point its tag column at v1.31.1.
v1.31.1
2026-09-13 12:42:40 +03:00
Ihor Orlovskyi e7e82f593d Add parallel-agents skill (#53)
Add `parallel-agents` 1.0.0, a stateless concurrency primitive that proves work
units independent, maps mutable state requiring isolation, dispatches one bounded
wave of agents with focused briefs, and reconciles results before integration.
Sequential execution stays a legitimate successful outcome.

Register the skill in README.md, skills.sh.json and the mirrored plugin
marketplace catalog under a new Orchestration group.

Bump `debugging` to 1.0.3 so independent evidence streams route to
`parallel-agents`, which owns independence assessment, isolation topology and
bounded dispatch.
v1.31.0
2026-09-13 12:36:05 +03:00
Ihor Orlovskyi 8ee7cde3eb Add workspace isolation skill (#52) v1.30.0 2026-09-13 11:34:15 +03:00
Ihor Orlovskyi 592ac7a094 Add verification-gate skill and release metadata (#51)
- Add the verification-gate package and references.
- Synchronize registries and changelogs.
- Route debugging completion checks to verification-gate.
v1.29.0
2026-09-13 03:46:19 +03:00
Ihor Orlovskyi 46ae6b8cd5 Add review-resolution skill (#50) v1.28.0 2026-09-12 14:01:05 +03:00
Ihor Orlovskyi e23b1e9437 Review request (#49)
* Add review-request skill

* Update CHANGELOG.md
v1.27.0
2026-09-12 11:36:06 +03:00
Ihor Orlovskyi ba3b14ae7c Release debugging skill 1.0.0 (#48)
* Add evidence-driven debugging skill

- Add the canonical root-cause-first methodology and field techniques.
- Register the skill and release metadata for v1.26.0.
- Clarify the complementary boundary with web-debug.

* Correct debugging skill composition identifiers
v1.26.0
2026-09-11 01:23:26 +03:00
Ihor Orlovskyi 81a397bd66 Restore the required tdd heading (#47)
Keep the exact Test-Driven Development heading specified for the skill.
v1.25.0
2026-09-11 00:42:52 +03:00
Ihor Orlovskyi 41e470dcf2 Add tdd skill and planning handoff (#46)
* Add tdd skill and planning handoff

Add the framework-neutral TDD workflow and test-quality reference.
Teach plan-crafting to hand behavior changes to tdd and publish the skill
in repository metadata.

* Finalize tdd release metadata
2026-09-11 00:29:16 +03:00
Ihor Orlovskyi fcc8791faa Release maintaining-agent-context 1.3.0 (#45)
* Evaluate a directory-scoped split before compression in Phase 3

* Add the directory-scoped split procedure to the root criteria

* Read the restructuring checklist in Phase 5 and verify created files and written limits in Phase 6

* Bump to 1.3.0 and record the changelog and README entries

* Let the repository map reach the split decision
v1.24.0
2026-09-08 22:37:46 +03:00
Ihor Orlovskyi 46fa6f3fb6 Release frontend-crafting 1.3.0 (#44)
* Allow composite Step 0 mode for a single surface

* Add composite-surface guidance to direction.md

* Add pass/fail/unavailable status for static-only checks

* Mark quality-gate checks that need a browser as unavailable-eligible

* Add first-audit clause, baseline/finding boundary, absence-check class rule and composite fit-to-mode

* Add Persisting the review contract and extend the delivery checklist

* Bump to 1.3.0 and record the changelog and README entries

* Scope the static-only status rule and align routing notes after review

* Keep unavailable out of the severity field
v1.23.0
2026-09-08 22:35:37 +03:00
Ihor Orlovskyi 3a0ab42d45 Release echarts 1.2.0 (#43)
* Route ECharts audits without a dependency

* Add applicability, repeat audits, DOM proxies and render criteria to the echarts audit reference

* Release echarts 1.2.0
v1.22.0
2026-09-07 11:13:56 +03:00
Ihor Orlovskyi dff7003e16 Release vitest 1.3.0 (#42)
* Add stdout, threshold headroom, e2e gate and isolated timing checks to the vitest audit reference

* Add a repeat audits section to the vitest audit reference

* Qualify the Vitest 5 isolate advice, add the keyed useAsyncData teardown and tighten the cross-env wording

* Release vitest 1.3.0
v1.21.0
2026-09-07 04:48:04 +03:00
Ihor Orlovskyi c276ec6e12 Release typescript 1.4.0 (#41)
* Warn about the Nuxt program, solution configs and traced numbers in the typescript performance section

* Add dedupe, dry run, companion program, counting and repeat audit recipes to the typescript audit reference

* Release typescript 1.4.0
v1.20.0
2026-09-07 03:22:08 +03:00
Ihor Orlovskyi 62041de2e6 Record the Snyk pre-flight baseline findings (#40)
* Record the Snyk pre-flight baseline findings for plan-crafting and echarts

* Scope Snyk baseline guidance to the reviewed skills
2026-09-07 02:45:42 +03:00
Ihor Orlovskyi ce2586144a frontend-crafting 1.2.1: name unset thresholds, keep polish within the named region (#39)
Two clarifications to existing rules. No new files, no new behaviour.

- `references/quality-gate.md` - the colour-alone rule now says what to do when the
  non-colour cue needs a threshold the brief does not set: prefer a cue that needs no
  threshold, and where one is unavoidable, name it as an assumption instead of burying
  it in code as a silent number.
- `references/polish.md` - a change stays within the side, edge, element or region the
  request named. A matching opposite-side adjustment, or an unrequested threshold,
  counter or badge, is proposed rather than applied.

Paired eval cycle on 9d717f5: 48 runs, harness verification clean, completeness gate
exit 0. See docs/reviews/2026-09-02-frontend-crafting-1.2.1.md in skills-aiassist for
the full comparison.
v1.19.1
2026-09-02 22:12:16 +03:00
Ihor Orlovskyi 8eb7083aa8 frontend-crafting 1.2.0: structural Step 0, prior-review guidance, severity-neutral user impact (#38)
* Add structural announcement step and prior-review guidance to frontend-crafting

* Clarify the Step 0 trigger and add prior reviews to the review checklist

* Trigger Step 0 on the first write or verdict, not on first prose

Four independent graders found the same thing across 21 runs: the session
opens with an orientation sentence and only then invokes the skill, so by
the time SKILL.md loads, 'the first visible prose of the reply' is already
spent. No wording inside the skill can reach text emitted before the skill
exists, and the control group shares the habit, so this was measuring the
model rather than the skill. Step 0 now fires before the first file write
and before any finding or verdict - the second trigger keeps the review
workflow covered, which writes nothing.

Also name the polish/redesign boundary. The evals ask for polish on a
console described as working but unfinished, which is the polish row
verbatim, but the redesign row admitted the same request and all three
runs took it, then elaborated: battery thresholds, chip counters, a fault
KPI card. Both rows now say which side that request falls on.

* Define a finding as an itemised entry in review.md

Two graders read 'every reported finding carries every field' differently:
one counted only itemised entries, the other also counted the Layer 1
theme paragraphs. That split, not the skill, produced a 2/3 against 0/3
gap between versions on the same expectation, so the criterion could not
measure anything until the word was pinned.

Layer 1 prose stays fieldless - fields there would turn the experience
layer into a form. The obligation runs the other way: a specific defect
named in that prose has to be promoted to an entry rather than left as a
loose claim.

* Correct the 1.19.0 changelog entry to the shipped Step 0 trigger
v1.19.0
2026-09-02 14:36:32 +03:00
Ihor Orlovskyi 26a9c7ff6b Improve frontend-crafting repository review guidance (#37) v1.18.0 2026-09-01 19:11:11 +03:00
Ihor Orlovskyi 3d5bd41b30 Add frontend-crafting skill (#36)
* Add frontend-craft skill

* Fix self-review findings

* Fix adversarial review findings

* Enforce visible design read and full finding format after RED eval verdict

Pre-release evals showed with-skill sessions passing code expectations but
missing the skill's own process contract:

- review.md licensed a fieldless one-line P3 summary, contradicting its own
  finding format and delivery checklist; P3 entries now carry full fields or
  are cut, and layer separation requires explicitly headed sections
- the mode announcement and design read could satisfy the letter of the
  contract from private reasoning; SKILL.md and direction.md now require both
  in the visible reply before the first file is written

* Register frontend-craft in release metadata

* Rename frontend-craft to frontend-crafting

* Fix stale H1 title in frontend-crafting SKILL.md

The heading still read "Frontend Craft" from the pre-rename working name;
align it with the skill's actual name, frontend-crafting.
v1.17.0
2026-09-01 14:47:21 +03:00
Ihor Orlovskyi af92c91154 commit-all 1.0.1 to 1.1.0: one-shot commit, pre-existing-changes gate removed (#34)
An explicit /commit-all is the approval: on a feature branch the skill shows the
file list and generated message as a progress update and commits in the same
turn. Pre-existing tracked changes and a missing session snapshot no longer
pause the run; the remaining stops are the default branch, suspicious untracked
files, and unsafe path arguments, with dry-run as the guaranteed stop.
v1.16.0
2026-08-30 23:46:08 +03:00
Ihor Orlovskyi d9851b0c9d maintaining-agent-context 1.1.0 to 1.2.0: unit-aware sizing, inline safety constraints, confirmation gate hardening (#33)
- Phase 1 records the unit and command behind every size, and keeps
  cross-repository symlinked instruction files on the map but outside edit scope.
- Constraints that must hold before a pointer target is opened stay inline next
  to the pointer instead of behind it.
- Phase 3 reads file bodies before judging duplication and contradiction.
- Phase 4 reports wrong facts found outside the instruction files in their own
  section, and may state the current structure is already the target.
- Phase 5 keeps the confirmation gate even when the invocation asks to skip it.
- Phase 6 re-checks edited lines and files against the limits the audit treated
  as governing.
- Assessment criteria: redundant-command category, import-shim criterion, and
  an optional "Findings outside the instruction files" report section.
v1.15.0
2026-08-29 21:27:38 +03:00
Ihor Orlovskyi bb015a8fe8 maintaining-agent-context 1.1.0: risk-based verification, explicit units, read-only shell boundary (#32)
Risk-based spot-checking with explicit verification statuses, coverage scope,
and residual uncertainty for large instruction surfaces (Phase 2); explicit
measurement units for every size or limit claim (Phase 3); verification
coverage and residual uncertainty in the report (Phase 4); the reformatting-
vs-compression trade-off separated into an approval step before applying only
the approved choice while preserving semantic content (Phase 5/6). Local
read-only shell inspection is now explicitly allowed during the audit phases,
while project and repository-controlled commands stay out of scope. Updates
the skill CHANGELOG, repository CHANGELOG (1.14.0), and README version/tag
columns, adds references/restructuring-verification.md, and hardens
test_contract.py.
v1.14.0
2026-08-25 19:42:33 +03:00
Ihor Orlovskyi ca35743444 Add maintaining-agent-context skill 1.0.0
Audit, restructure, and maintain a repository's agent instruction architecture
(AGENTS.md, CLAUDE.md variants, .claude/rules/, skills, linked agent docs) for
Claude Code and Codex. Synthesizes the writing theory of mattpocock
writing-for-agents with the operational shape of Anthropic claude-md-improver:
read-only discovery and verification, per-file-type assessment criteria, a
quality report before any edit, and diff proposals gated on user confirmation.
Registers the skill in README, repo CHANGELOG (1.13.0), skills.sh.json, and the
plugin marketplace under a new Agent Context group.
v1.13.0
2026-08-24 00:27:28 +03:00
Ihor Orlovskyi 8a44fe544e Trim the five most expensive skill descriptions (#30)
* Trim the five most expensive skill descriptions

* Finalize v1.12.1 release notes for the description-trims batch

Turn the repository CHANGELOG Unreleased section into the 1.12.1 entry
and mark the five trimmed skills with the v1.12.1 release tag in README.
v1.12.1
2026-08-21 00:25:46 +03:00
Ihor Orlovskyi 9c6766a385 Release skills v1.12.0: commit-all skill and the 2026-08-19 dashfix/negafix feedback (#29)
* Answer the 2026-08-19 feedback for dashfix and negafix

dashfix 1.2.0: single-file pre-handoff check, candidate vs replace counts,
block-level language classification in mixed Markdown, and a named fix in
every replace row. negafix 1.2.0: single-file check with mandatory verdicts,
candidate framing for all pattern matches, and an exploratory Ukrainian
'ne A, a B' pattern with manual verdicts.

* Add the commit-all skill for user-invoked single-commit gathering

Answers docs/requests/create-commit-all-skill.md from skills-aiassist:
one commit on the current branch with a generated English message,
explicit /commit-all invocation only, dry-run support, and guard rails
against default-branch commits, mixed trees, hook bypass, and pushes.

* Release skills v1.12.0: commit-all skill and the 2026-08-19 dashfix/negafix feedback

Combines two feature branches into one repository release: the commit-all
1.0.0 skill for user-invoked single-commit gathering, and dashfix 1.2.0 /
negafix 1.2.0 answering their 2026-08-19 field feedback (single-file
pre-handoff checks, candidate framing, per-block language classification).
v1.12.0
2026-08-20 23:54:25 +03:00
Ihor Orlovskyi 99f784578d Make dashfix language-aware and give both writing-style skills an enforcement hook (#28)
* Add the skills.sh badge and consolidate the install commands in README

* Make dashfix language-aware and give both writing-style skills an enforcement hook

Answers the first field feedback on dashfix 1.0.0.

- dashfix 1.1.0: "Language scope" binds the ban per file. English keeps the full
  ban; in Ukrainian, Russian, Polish and German the em dash is orthography, so the
  skill checks its form and a correct dash earns a fifth `justified` category.
- Both skills scan commit messages via `git log`, catalog them separately by hash
  and keep them out of the score, since history needs a rewrite to change.
- Both ship `scripts/commit-msg`: dashfix rejects a banned dash, negafix warns
  only, because its patterns overmatch by design. dashfix also documents a
  `PreToolUse` snippet, and both state that write mode dies with a compaction.
- Both scores are normalized by project size (`100 - spread - depth`) so five
  dirty files no longer force a 0 in a 2000-file repository.
- Scan exclusions become a rule, and dashfix drops the `grep -rnP` fallback that
  BSD grep on macOS cannot run.

* Fix the review findings on the history scan, the hooks and the score edges

- `git log --grep` now does the matching in both skills, so every hit prints with
  its hash even from a commit body, and merge commits stay in scope
- the dashfix hook skips a message written in Cyrillic instead of rejecting a
  correct Ukrainian or Russian dash, and its header names German among the
  languages that keep the hook uninstalled
- the `PreToolUse` snippet drops `jq`: without it the pipeline ended on a
  successful perl and passed the commit through in silence
- negafix looks for `not a ... but a` in its inventory regex and its hook, which
  its own pattern list had documented all along
- the score states what to report when no file is in scope, and the perl fallback
  uses `git ls-files -z | xargs -0` so a filename with a space survives

* Make the history scan a per-match catalog and harden the perl fallback

- `git log --grep` now only selects the commits; an inner `rg` pass over
  `git show -s --format=%B` prints one line per match as `<hash>:<line>:<snippet>`,
  so the history table catalogs every match instead of one row per commit.
  Verified on 09b2413, which carries five dashes in its body and produced five rows.
- the perl fallback passes `--` before the filenames, since perl otherwise reads a
  path such as `-weird.md` as its own switches and dies
- the Cyrillic heuristic states both of its limits in SKILL.md and in the hook
  header: an English message mentioning a Cyrillic name is skipped too, and
  Latin-script Polish and German cannot be detected at all. The audit is what
  catches what the hook misses.

* Count occurrences, not matching lines, in both audits

`rg -n` prints a line once however many matches it holds, so the line-oriented
inventory understates the total the catalog and the score depend on. On this
repository the gap is real: dashfix sees 80 lines against 89 occurrences, negafix
39 against 57.

- both skills add a `--count-matches` pass, and the reported total comes from it
- Step 2 says one row per matching line, a row states how many occurrences its
  line carries, and a line whose occurrences disagree on the verdict splits into a
  row each; both catalogs gain an example row
- Verification asks the catalog to account for every occurrence in that total

* Guard the shared negafix pattern and key split rows by occurrence

- negafix sets `PATTERN` once at the head of Step 1, and the working-tree,
  history and counting blocks each open with `: "${PATTERN:?...}"`. Run alone, a
  block previously handed `rg` an empty pattern, which matches every line and
  reported a total unrelated to the project; it now aborts with the message.
- a line whose occurrences carry different verdicts splits into rows keyed
  `<location>#<n>` in reading order, so no two catalog rows share a key. Both
  skills document the form and show an example pair.

* Anchor the working-tree scans at . and align the perl fallback with rg

- both working-tree passes name `.`: given a piped stdin and no path, `rg` reads
  the pipe instead of the tree and reports zero matches on a project that has 93
- the perl fallback repeats the scan exclusions as `:(exclude)` pathspecs, so it
  no longer scores a wider file set than the primary command
- the same fallback closes `ARGV` at each `eof`. Without it `$.` ran on across the
  whole file list, so every line number after the first file was wrong: the run on
  this repository pointed at CHANGELOG.md:381 where rg reports :101. With the fix
  both passes return byte-identical location lists (82 lines).

* Make the perl fallback scan the same file set as rg

On a fixture with a tracked, an untracked, a gitignored, a nested lock, a hidden
and a binary file, rg read two files and the fallback read one. Now both read the
same two.

- `--others --exclude-standard` picks up untracked files while still honoring
  `.gitignore`; plain `git ls-files` saw only tracked ones
- the exclusion pathspecs gain `**/`, so a nested `package-lock.json` drops out
  the way an rg glob without a slash already dropped it
- `':!:.*' ':!:**/.*'` skip hidden paths as rg does by default, with the text
  naming `--hidden` as the way to audit them on both sides
- binary files stay the one difference, stated in the text rather than left to
  surprise the reader

On this repository both passes now return byte-identical location lists.

* Exclude root lock files and binary files from the perl fallback

A git pathspec is not a gitignore pattern: `**/package-lock.json` reached the
nested copies and left the one in the root, so the fixture kept package-lock.json,
a.min.js and a.map that rg had dropped. Every exclusion is now listed twice, bare
and `**/`-anchored.

The fallback also skips a file holding a NUL byte, which is the rule rg uses to
call a file binary; the fixture's binary.dat no longer reaches the catalog. Perl's
own `-B` test was tried first and let that file through, since a few NUL bytes in
mostly ASCII stay under its 30% threshold.

Slurping with `-0777` and counting lines per file replaces `close ARGV if eof` and
keeps the numbering right.

Verified: on the fixture rg and the fallback agree except for a file with invalid
UTF-8 and no NUL, which the text now names as the best-effort limit; on this
repository both passes return byte-identical location lists.

* Name the force-added gitignored file as the second fallback limit

Reproduced on a fixture: a file that .gitignore covers but that `git add -f` put
in the index is skipped by rg, which goes by the ignore rules alone, and kept by
`--exclude-standard`, which sees it in the index.

Filtering those paths would need another `git check-ignore` stage in what is
already a long one-liner, so the text names the case instead, next to the invalid
UTF-8 one, and gives the command that lists them:
`git ls-files --cached --ignored --exclude-standard`. Rows from either kind get
dropped before scoring and the report says so.

* Skip symlinks in the perl fallback

rg follows a link only under --follow, so a fixture with real.md and a link.md
pointing at it gave rg one row and the fallback two, counting the same text twice.
`next if -l $ARGV` costs one token and closes the gap: both passes now return
real.md alone on that fixture, and byte-identical location lists on this
repository.

* Name the rg flag that pairs with dropping the symlink test

* Finalize v1.11.0 release details
v1.11.0
2026-08-11 03:14:17 +03:00
Ihor Orlovskyi f953c4fa1b Catch the plugin marketplace catalog up with the skill list (#27)
marketplace.json was last touched in v1.3.1 and misses scope-triage, plan-crafting, dashfix, and negafix. Add the design-planning and writing-style plugin groups mirroring skills.sh.json, refresh the marketplace description, and bump its manifest version to 1.1.0. AGENTS.md now requires updating marketplace.json in the same PR that adds, renames, or removes a skill.
2026-08-09 20:37:48 +03:00
Ihor Orlovskyi 3070e1994b Release skills v1.10.0: dashfix and negafix skills, and a repository-wide dash cleanup (#26) v1.10.0 2026-08-09 18:38:10 +03:00
Ihor Orlovskyi 05b65eb75c Document the Snyk W007 trigger and the local agent-scan pre-flight (#25)
Record what actually cleared the audit finding on scope-triage: W007 fires on the
directive to repeat literal values from the request, and a carve-out placed after
it does not help. Also note that a clean local snyk-agent-scan run is a pre-flight
only, since it passed the version skills.sh failed.
2026-08-09 03:07:03 +03:00
Ihor Orlovskyi 3eeb5e7578 Fix scope-triage Snyk W007 wording (#24)
The skills.sh Snyk audit still returned W007 (high) on scope-triage 1.0.1: Step 0
and Route A asked the model to repeat the literal values, names, and numbers from
the request, and the secrets carve-out sat in a following paragraph, so the audit
read the instruction as forcing the model to echo user-supplied secrets verbatim.

Both places now ask for the request's domain values, the prohibition on
reproducing a secret, token, key, password, connection string, or personal datum
leads its own paragraph, and credentials are referenced by placeholder name in
the done criterion, in every command, and in the Security Model. No workflow
change; scope-triage 1.0.1 -> 1.0.2, release 1.9.1.
v1.9.1
2026-08-09 03:03:53 +03:00
Ihor Orlovskyi 17ea97d943 Release skills v1.9.0: audit and feedback fixes, and a hardened Vitest runner (#23)
Release six updated skills with audit and feedback fixes. Harden Vitest auto-selected script execution and its runtime trust boundary, add regression coverage, improve web-debug checkpoint safety, and strengthen CI validation.
v1.9.0
2026-08-02 23:34:19 +03:00
Ihor Orlovskyi 09b24134bd Prepare skills v1.8.0
Release v1.8.0: security-normalized audit guidance across the public skill collection.

- echarts 1.0.5 -> 1.1.0 — progressive-disclosure audit reference, hardcoded-hex
  classification, notMerge pitfall guidance.
- plan-crafting 1.0.0 -> 1.1.0 — Security Model documenting repository evidence and
  tool output as data, not commands.
- typescript 1.2.2 -> 1.3.0 — normalized TypeScript and Nuxt audit reports, safe
  local-tool resolution, Node-runtime preflight guidance.
- vitest 1.0.3 -> 1.1.0 — normalized, safe existing-suite audit reports and audit
  guidance.
- web-debug 1.2.1 -> 1.3.0 — hardened readiness and bounded log evidence, login-then-
  audit pattern.
v1.8.0
2026-07-31 20:35:23 +03:00
ihororlovskyi 601f63a113 Add scope-triage 1.0.0 and plan-crafting 1.0.0
scope-triage is a scope-gated fork of superpowers brainstorming: it classifies
request scope first, and only the full-design route writes a design doc to
docs/specs/ and hands it to plan-crafting.

plan-crafting is a fork of superpowers writing-plans that turns an approved
design into bite-sized TDD tasks and saves the plan to docs/plans/.

Both replace their upstream counterparts rather than complementing them.
v1.7.0
2026-07-29 17:50:27 +03:00
Ihor Orlovskyi 9a6ad4d0da echarts 1.0.5: design-tokens theming, hardcoded hex classification, notMerge pitfall (#18)
Feedback-driven update from an agilecharts echarts audit session (2026-07-20):
- audit checklist item 7: design-tokens theming as a valid registerTheme alternative
- audit checklist item 6: one-off hardcoded hex is duplication debt
- Common Failure Modes: notMerge-everywhere trade-off
v1.6.0
2026-07-20 21:44:32 +03:00
Ihor Orlovskyi 87694d5d6f web-debug 1.2.1: HMR form-reset pitfall, login-then-audit pattern (#17)
Feedback-driven update from an agilecharts audit session (2026-07-20):
- Waiting Strategy: cold dev-server HMR reload wipes typed form values
- Best Practices: login-then-audit flow; no input_value() after redirect
- console_audit.py: optional login step, shared context, template note
2026-07-20 21:43:34 +03:00
Ihor Orlovskyi 1095e3501d vitest 1.0.3: Nuxt auto-import leak, .nuxt cache warning, mixed env example (#16)
Feedback-driven update from an agilecharts vitest audit session (2026-07-20):
- Common Failure Modes: auto-import leak into environment:node files
- Common Failure Modes: regenerate .nuxt via nuxt prepare, don't rm -rf
- Nuxt adapter: mixed node/nuxt environment config example
2026-07-20 21:42:40 +03:00
Ihor Orlovskyi ce96f990c6 typescript 1.2.2: audit heuristics, Vue generic props, TS7 target checklist (#15)
Feedback-driven update from agilecharts audit session (2026-07-20) plus two
unclosed items from the 2026-07-13 TS7 migration feedbacks:
- already-healthy early exit and sampling heuristic in Audit & Hardening
- generic defineProps note in Framework Projects
- ERR_PACKAGE_PATH_NOT_EXPORTED './lib/tsc' in the error playbook
- Choosing the TS-7 target checklist + types:[] vs lib note in the migration ref
2026-07-20 21:41:39 +03:00
Ihor Orlovskyi d6f3aafbaa v1.5.0: security remediations (web-debug, echarts) + MUST descriptions (#14)
* web-debug: run --server commands without a shell (shlex + shell=False)

* web-debug 1.2.0: no-shell --server, pinned install, boundary rules, MUST description

* echarts 1.0.4: SRI-pinned UMD example (Snyk W012), MUST description

* typescript 1.2.1, vitest 1.0.2: MUST-style descriptions

* v1.5.0: README, changelog, MUST-description convention
v1.5.0
2026-07-19 09:33:52 +03:00
Ihor Orlovskyi 3706b08b3d typescript 1.2.0: native compiler detection, hardening flags, and TypeScript 7 dual-install guidance (#13)
- inspect_typescript.py: detect side-by-side native compiler (TypeScript 7) and
  report each typecheck* script's target tsconfig; hardening flags now include
  noImplicitOverride, noFallthroughCasesInSwitch, noUnusedLocals, noUnusedParameters;
  explicit "coverage complete" result instead of staying silent
- typescript-7-migration.md: document real-package dual-install layout keeping
  typescript on genuine 6.x for vue-tsc/Volar; add CI multi-path guidance to
  gate every compiler path
- test_helpers.py: 3 new regression tests (10 total, all passing)
- SKILL.md: clarify worktree absolute paths, document audit per typecheck* script
- .gitignore: remove unused upstream/ entry
v1.4.0
2026-07-13 01:34:14 +03:00