tamash-playwright 0.11.0-beta.7 → 0.11.0

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/.env.example CHANGED
@@ -60,7 +60,7 @@ OLLAMA_API_KEY=
60
60
  # In other CI systems: set GITHUB_TOKEN (or COPILOT_GITHUB_TOKEN) to a PAT with "Copilot Requests".
61
61
  # COPILOT_SUBSCRIPTION_MODEL=mai-code-1-flash-picker
62
62
 
63
- # --- Cursor subscription (LOCAL DEVELOPMENT ONLY -- @beta) ---
63
+ # --- Cursor subscription (LOCAL DEVELOPMENT ONLY -- experimental, prefer kiro/codex) ---
64
64
  # Requires: the `agent` CLI installed (curl https://cursor.com/install -fsS | bash) and signed in
65
65
  # via `agent login` (or CURSOR_API_KEY). Runs `agent -p --trust --mode ask --output-format json` --
66
66
  # `--mode ask` is Cursor's read-only Q&A mode, so a heal call can't edit files or run commands.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project are documented here. Format loosely follows
4
4
  [Keep a Changelog](https://keepachangelog.com/); dates are when each version was published.
5
5
 
6
- ## [0.11.0] - 2026-08-28
6
+ ## [0.11.0] - 2026-08-31
7
7
 
8
8
  ### Fixed
9
9
 
@@ -100,8 +100,8 @@ All notable changes to this project are documented here. Format loosely follows
100
100
  is an interactive assistant rather than a one-shot completion endpoint — given the heal prompt it
101
101
  often answers conversationally instead of with the required JSON, so the heal is declined more
102
102
  often than with `kiro`/`codex`. It's now invoked in the safest/best-effort form
103
- (`agent -p --trust --mode ask --output-format json`, read-only) and still ships `@beta`; the docs
104
- note `kiro`/`codex` are the steadier local-subscription options. Report issues if you hit them.
103
+ (`agent -p --trust --mode ask --output-format json`, read-only) and is marked **experimental**;
104
+ the docs point to `kiro`/`codex` as the steadier local-subscription options. Report issues.
105
105
  Also: the full e2e healing suite (12 tests) was run end to end against `copilot-subscription` and
106
106
  `ollama` — **12/12 each** — to confirm the parser rewrite and provider changes don't regress it.
107
107
 
@@ -112,18 +112,21 @@ All notable changes to this project are documented here. Format loosely follows
112
112
  (`skills/tamash-playwright/`) was previously a copy-this-shell-one-liner-per-agent step buried in
113
113
  `SKILL.md`, with nothing verifying it had been done — so a project could `npm install` the
114
114
  package, never copy the skill, and its assistant would silently never load the workflow.
115
- `init-skill` auto-detects the assistant(s) in use (`.claude/`, `.kiro/`, `.cursor/`,
116
- `.github/copilot-instructions.md`, `AGENTS.md`) and installs the right artifact for each: the full
117
- skill directory for Claude Code / Kiro (`adapters/` excluded), the `.mdc` rule for Cursor, and a
118
- managed, re-updatable block for Copilot and `AGENTS.md` tools. `--agent` targets one explicitly,
119
- `--user` does a machine-wide Claude/Kiro copy, `--force` overwrites a hand-customized directory.
120
- Every install carries a `tamash-playwright-skill-version:` marker; `doctor`'s new **Skill**
121
- section reads it and reports `[OK]` current / `[WARN]` missing-for-a-detected-assistant /
122
- `[WARN]` outdated / `[INFO]` present-but-unmanaged, with the same one-line fix
123
- (`npx tamash-playwright init-skill`). Covered by 12 unit tests (`skill.test.js`, real installs
124
- into a temp dir) and verified live end to end: auto-detect, explicit `--agent`, idempotent
125
- re-run, in-place block replacement (no duplication), `--force` gating, and every `doctor` Skill
126
- state.
115
+ `init-skill` copies the skill (`SKILL.md` + `references/`) into **both** standard locations
116
+ `.claude/skills/tamash-playwright/` (Claude Code) and `.agents/skills/tamash-playwright/` (the
117
+ emerging cross-tool standard, read by Cursor, GitHub Copilot, Windsurf, Kiro, Zed, dotnet Aspire,
118
+ the same convention Playwright's own `playwright-cli install --skills` uses). Same content in
119
+ both; no per-agent format conversion. `--target claude` / `--target agents` installs one; `--user`
120
+ installs under your home directory; `--force` overwrites a hand-edited copy; `--dry-run` previews.
121
+ Each install carries a `tamash-playwright-skill-version:` marker; `doctor`'s **Skill** section
122
+ reads it and reports `[OK]` current / `[WARN]` behind-the-package-version / `[INFO]` not-installed
123
+ or unmanaged, with the same one-line fix. Covered by unit tests (`skill.test.js`, real installs
124
+ into a temp dir) and verified live end to end.
125
+
126
+ *(0.11.0-beta.7 shipped an earlier `init-skill` that instead auto-detected the agent and wrote a
127
+ Cursor-specific `.mdc` file / appended blocks to `.github/copilot-instructions.md` and
128
+ `AGENTS.md`. That approach is gone — `init-skill` and `doctor` now point out any such leftovers
129
+ from a beta.7 install so you can delete them by hand.)*
127
130
 
128
131
  - **`doctor`'s AI Provider check now tells you *what kind* of failure it hit and what to do about
129
132
  it, instead of one generic "no valid response".** Every provider gained an optional, diagnostics-
package/README.md CHANGED
@@ -190,7 +190,7 @@ A no-op if `copilot-subscription` was never used, so it's safe to add unconditio
190
190
 
191
191
  ### Using a Cursor, Kiro, or Codex subscription — local development only
192
192
 
193
- Three more subscription-based providers, all `@beta` and **local-development-only, never recommended for CI**, extending the same "use what you're already paying for" idea. Try them and open an issue if one misbehaves.
193
+ Three more subscription-based providers, all **local-development-only, never recommended for CI**, extending the same "use what you're already paying for" idea. `kiro-subscription` and `codex-subscription` are verified healing real broken locators; `cursor-subscription` is experimental (see the note below).
194
194
 
195
195
  **Cursor** — needs the `agent` CLI (`curl https://cursor.com/install -fsS | bash`) and `agent login` (or `CURSOR_API_KEY`):
196
196
 
@@ -257,7 +257,7 @@ It checks:
257
257
  3. **Vision capability** — whether your configured model is expected to support the screenshot-based fallback (see below), based on its name.
258
258
  4. **Missing `.describe()` labels** — scans your test files (`tests/` by default, or pass `--dir <path>`) for locators that don't have a `.describe('...')` label, and flags the ones most worth fixing (raw CSS/XPath selectors first).
259
259
  5. **Locators written directly in test files** — flags any locator defined inline in a test rather than inside a Page Object class, which is a Playwright best practice regardless of self-healing: it keeps tests readable and means a UI change only needs a fix in one place.
260
- 6. **Skill installation** — whether the orchestration skill this package ships (see [Using this with an AI coding assistant](#using-this-with-an-ai-coding-assistant)) has been copied into the project for the assistant(s) it uses, and whether that copy is still current. Fix is one command: `npx tamash-playwright init-skill`.
260
+ 6. **Skill installation** — whether the orchestration skill this package ships (see [Using this with an AI coding assistant](#using-this-with-an-ai-coding-assistant)) has been copied into `.claude/skills/` and/or `.agents/skills/`, and whether that copy is still current. Fix is one command: `npx tamash-playwright init-skill`.
261
261
 
262
262
  If it finds issues, the fastest fix is to open the project in an AI coding assistant (Claude Code, Cursor, GitHub Copilot, etc.) and ask it to address what it flagged — add `.describe()` calls, or extract locators into Page Object classes. You can also add a standing rule to that assistant's instructions/skill file (e.g. `CLAUDE.md`, `.cursor/rules`, `.github/copilot-instructions.md`) so it follows both practices automatically on any new test code going forward.
263
263
 
@@ -569,13 +569,18 @@ The same detail is also printed to the console as it happens, one line per attem
569
569
 
570
570
  This package ships a ready-made skill for running its local workflow inside an AI coding assistant — reviewing, applying, verifying, and landing whatever healed at runtime, and onboarding a project to its standards (provider setup, `actionTimeout`, `.describe()` labels) if it hasn't adopted them yet. It's pure orchestration over the exact CLI commands already documented above (`doctor`, `apply-heals`, `verify-heals.cjs`) — no new capability, just packaged so an agent can run the whole loop with judgment instead of you typing each command by hand.
571
571
 
572
- No agent auto-discovers a skill bundled inside `node_modules` — it's always one explicit step after install. Run:
572
+ No agent auto-discovers a skill bundled inside `node_modules` — it's one explicit step after install. Run:
573
573
 
574
574
  ```sh
575
575
  npx tamash-playwright init-skill
576
576
  ```
577
577
 
578
- It auto-detects the assistant(s) the project uses (`.claude/`, `.kiro/`, `.cursor/`, `.github/copilot-instructions.md`, `AGENTS.md`) and installs the right file for each — the full skill for **Claude Code** / **Kiro**, the `.mdc` rule for **Cursor**, an appended (and re-updatable) section for **GitHub Copilot** and for any `AGENTS.md`-reading tool (Antigravity, Gemini CLI, Windsurf, Zed, Aider, …). Pass `--agent <claude|kiro|cursor|copilot|agents>` to target one explicitly, `--user` to install the Claude/Kiro copy machine-wide, `--force` to overwrite a hand-customized copy. Re-run it after upgrading the package — `doctor` flags when the installed skill is behind. The exact per-agent copy commands, if you'd rather do it by hand, are in [skills/tamash-playwright/SKILL.md](skills/tamash-playwright/SKILL.md).
578
+ That copies the skill (`SKILL.md` + `references/`) into **both** standard locations the same convention Playwright's own `playwright-cli install --skills` uses:
579
+
580
+ - `.claude/skills/tamash-playwright/` — Claude Code
581
+ - `.agents/skills/tamash-playwright/` — the emerging cross-tool standard, read by Cursor, GitHub Copilot, Windsurf, Kiro, Zed, and others
582
+
583
+ Same content in both; no per-agent format conversion. `--target claude` / `--target agents` installs just one; `--user` installs under your home directory (covers every project); `--force` overwrites a hand-edited copy. Re-run after upgrading the package — `doctor` flags when the installed skill is behind. By-hand instructions are in [skills/tamash-playwright/SKILL.md](skills/tamash-playwright/SKILL.md).
579
584
 
580
585
  ## License
581
586
 
@@ -17,7 +17,7 @@ currently covered · N/A not applicable to that column.
17
17
  | Core action healing (click/fill/check/selectOption/etc.) | Any wrapped Playwright action retries against a healed locator on failure. | ✅ Extensive unit + e2e coverage (many repro specs) | ✅ Every CI run exercises this against the sample repos' own broken locators |
18
18
  | Master on/off switch (`HEALER_ENABLED=false`) | A broken locator fails exactly like vanilla Playwright when healing is off; a working locator is unaffected either way. | ✅ Permanent e2e (`healing-disabled.e2e.spec.ts`) — **found with zero coverage anywhere in this repo, ever, until asked directly whether "with and without AI healing" had actually been tested** | ❌ Neither CI workflow runs with healing disabled (`apply-heals`'s own verification step does, but only to confirm an already-applied fix works standalone — not the same as testing a genuinely broken locator with healing off) |
19
19
  | `.describe()` context | Human-readable label chained onto a locator, used as the AI's primary description. | ✅ Used throughout the test suite | ✅ Both sample repos' tests use it |
20
- | Automatic variable-name description fallback | `extractVariableName` (raw identifier) + `decodeVariableName` (decoded phrase + type hint) when `.describe()` isn't called. | ✅ 10+10 unit tests, permanent e2e spec | Not yet this release's beta hasn't been pushed to either sample repo's CI yet |
20
+ | Automatic variable-name description fallback | `extractVariableName` (raw identifier) + `decodeVariableName` (decoded phrase + type hint) when `.describe()` isn't called. | ✅ 10+10 unit tests, permanent e2e spec | 🔎 Exercised on every sample-repo CI heal (it's the description path when `.describe()` is absent), no dedicated assertion |
21
21
  | Search-scoped snapshots | Sends a narrower excerpt of the accessibility tree when the description matches exactly one node, instead of the full page. | ✅ Live-verified (measured token reduction across several real cases) | 🔎 Silently exercised on every CI heal (it's the default first path), but no dedicated CI assertion checks it specifically |
22
22
  | `near` strategy (nameless field via label) | Resolves an unlabeled field by climbing to a shared ancestor and finding the one plausible-role sibling. | ✅ e2e (`aic-form-healing`, `employee-id-healing`) | ✅ Indirectly — the sample repos' own Employee Id field is exactly this shape |
23
23
  | `adjacent` strategy (same-row disambiguation) | Precise sibling match when `near`'s ancestor search would find more than one same-role candidate. | ✅ e2e (`adjacent-sibling-healing`) + unit | ❌ No sample test currently has this shape |
@@ -31,19 +31,19 @@ currently covered · N/A not applicable to that column.
31
31
  | Heal caching (`heals.jsonl`) | A previously-confirmed selector is retried before a fresh AI call. | ✅ Unit (`healLog.test.js`) + e2e-observed | ✅ Uploaded as a CI artifact every run, consumed by `apply-heals` |
32
32
  | `apply-heals` (permanent fix + PR automation) | Turns a runtime heal into a committed source change; opens a PR in CI. | ✅ Unit (46 tests, all 9 strategies) | ✅ Dedicated CI job, runs every push |
33
33
  | `doctor` CLI | Pre-flight checks: provider connectivity, `actionTimeout`, vision capability, missing `.describe()`, inline locators, skill installation. | ✅ Run live against every provider including `tamash` this session | ❌ Not run as part of either CI workflow |
34
- | `init-skill` CLI + `doctor` Skill check | Installs the orchestration skill per detected assistant (dir copy / `.mdc` / managed block); `doctor` reports installed-and-current / missing / outdated / unmanaged. | ✅ Unit (`skill.test.js`, 12 cases: real installs into a temp dir, all three kinds, idempotency, `--force` gating, `skillState` transitions) + live: auto-detect (claude+copilot), explicit `--agent claude,cursor`, re-run in-place block replacement (1 BEGIN marker, not 2), `adapters/` excluded from the Claude copy, and every `doctor` Skill state (OK / outdated WARN / missing-for-detected WARN / no-assistant INFO) | ❌ Not run in CI (neither workflow runs `doctor` or `init-skill`) |
34
+ | `init-skill` CLI + `doctor` Skill check | Copies the skill into `.claude/skills/tamash-playwright/` and `.agents/skills/tamash-playwright/` (Playwright's `install --skills` convention no per-agent conversion); `doctor` reports current / outdated / unmanaged / absent per location and flags pre-beta.8 leftovers. | ✅ Unit (`skill.test.js`, real installs into a temp dir: both targets, idempotency, version-bump re-copy, `--force` gating, `--user`, `--dry-run`, `skillState` transitions, legacy-artifact detection) + live: `init-skill` (both), `--target agents`, `--help`, and every `doctor` Skill state incl. leftover `.mdc` / appended-block detection | ❌ Not run in CI (neither workflow runs `doctor` or `init-skill`) |
35
35
  | `doctor` categorised provider diagnosis | `diagnose()` per provider → `doctor` maps `not-installed`/`not-authenticated`/`timeout`/`bad-model`/`network`/`bad-response` to a specific fix. | ✅ Unit (`providerDiagnostics.test.js`, 13 cases on both classifiers) + live: `openai` bad key → `not-authenticated` (401 body shown), `openai` bad base URL → `network`, `copilot-subscription` bad model → `bad-model`, 1ms `actionTimeout` → `timeout` with raise-the-timeout guidance, and all three not-installed shapes (moved the dep out of resolution and restored it): `@github/copilot-sdk` CJS `MODULE_NOT_FOUND`, `@anthropic-ai/claude-agent-sdk` ESM `ERR_MODULE_NOT_FOUND`, missing `kiro-cli` `ENOENT` → each `not-installed` with its install command | ❌ Not run in CI (neither workflow runs `doctor`) |
36
36
  | `getDurable()` | Resolves any locator (e.g. `aria-ref=...`) to a durable, reusable equivalent. | ✅ e2e (`get-durable-*-repro`, 4 specs incl. concurrency) | ❌ No CI sample test calls it directly |
37
37
  | Provider: `ollama` | API-key provider, Ollama Cloud. | ✅ Verified this session (live calls, real token counts) | ✅ Both CI workflows now run a `test-ollama` job, confirmed green |
38
38
  | Provider: `ollama-local` | Self-hosted Ollama server; `OLLAMA_LOCAL_API_KEY` optional, unlike `ollama`'s required key. | ✅ Verified against a genuine local Ollama installation this session (real `ollama serve`, `qwen2.5:0.5b` pulled and warmed) — confirmed the default `OLLAMA_LOCAL_BASE_URL`, real request/response round-trip (including correct token-usage extraction), and that the real server both works with no `Authorization` header and tolerates one being sent unnecessarily; also confirmed end-to-end via the real `doctor` CLI, not just a direct provider call. (A synthetic fake-HTTP-server test preceded this and is superseded by it.) | ❌ Not used in either CI workflow (no self-hosted Ollama instance available in CI) |
39
- | Multi-agent skill (`skills/tamash-playwright/`) | Local review/apply/verify/land workflow for AI coding assistants, plus adapters for Claude Code, Kiro, Cursor, Copilot, and `AGENTS.md`-reading tools. | ✅ Exercised end-to-end by real, unbriefed agents in isolated environments (no prior tamash-playwright knowledge given) — three separate walkthroughs: (1) a project with real `doctor` `[WARN]`s → correctly routed to `onboarding.md`, fixed 6 missing `.describe()`s, and correctly stopped at the Page Object gate rather than "fixing" files it verified were intentionally non-POM demos; (2) a `doctor`-clean project with a real broken locator → correctly routed to `heal.md`, ran the full RUN→REVIEW→APPLY→VERIFY loop unattended, and correctly stopped at LAND rather than committing anything; (3) a from-scratch project with zero `tamash-playwright` presence → correctly installed and configured it from the published package's own docs (the skill doesn't exist in any published version yet, confirmed), proved real healing by deliberately breaking a locator and watching it recover live, and in doing so found a real bug now fixed (see CHANGELOG: `doctor`'s connectivity check was decoupled from the real `actionTimeout`). Six genuine documentation bugs found and fixed across all three runs, not just "read for plausibility." | ❌ Not used in either CI workflow (nothing to run in CI — this is consumed by an agent, not by the test suite) |
39
+ | Multi-agent skill (`skills/tamash-playwright/`) | Local review/apply/verify/land workflow for AI coding assistants, plus adapters for Claude Code, Kiro, Cursor, Copilot, and `AGENTS.md`-reading tools. | ✅ Exercised end-to-end by real, unbriefed agents in isolated environments (no prior tamash-playwright knowledge given) — three separate walkthroughs: (1) a project with real `doctor` `[WARN]`s → correctly routed to `onboarding.md`, fixed 6 missing `.describe()`s, and correctly stopped at the Page Object gate rather than "fixing" files it verified were intentionally non-POM demos; (2) a `doctor`-clean project with a real broken locator → correctly routed to `heal.md`, ran the full RUN→REVIEW→APPLY→VERIFY loop unattended, and correctly stopped at LAND rather than committing anything; (3) a from-scratch project with zero `tamash-playwright` presence → correctly installed and configured it from the published package's own docs, proved real healing by deliberately breaking a locator and watching it recover live, and in doing so found a real bug now fixed (see CHANGELOG: `doctor`'s connectivity check was decoupled from the real `actionTimeout`). Six genuine documentation bugs found and fixed across all three runs, not just "read for plausibility." | ❌ Not used in either CI workflow (nothing to run in CI — this is consumed by an agent, not by the test suite) |
40
40
  | Provider: `openai` | API-key provider. | ✅ Re-verified live this release (`doctor` connectivity, real key) | ❌ Not used in either CI workflow |
41
41
  | Provider: `anthropic` | API-key provider. | ✅ Re-verified live this release (`doctor` connectivity, real key) | ❌ Not used in either CI workflow |
42
42
  | Provider: `gemini` | API-key provider. | ⚠️ Key authenticates and the model responds correctly (verified with a raw request, real `200 OK`), but `gemini-3.6-flash` took 50+ seconds to answer a trivial prompt — far beyond `doctor`'s 15s timeout and this repo's real `actionTimeout: 8000`ms, so it fails both `doctor` and real healing as currently configured, despite the key itself being valid | ❌ Not used in either CI workflow |
43
43
  | Provider: `claude-subscription` | No API key — uses a Claude subscription. | ✅ Verified this session | ✅ The Playwright sample repo's CI uses this as its default provider |
44
44
  | Provider: `copilot-subscription` | No API key — uses a GitHub Copilot subscription. | ✅ Verified this session | ✅ The Cucumber sample repo's CI uses this as its default provider |
45
45
  | Provider: `kiro-subscription` / `codex-subscription` | Local-development-only subscription providers (Kiro, Codex) — `child_process` wrappers, no official SDK. | ✅ **Both verified end to end, authenticated (2026-08-31)** — real `kiro-cli` v2.20.1 and `codex-cli` 0.151; `doctor` `[OK] Connected`; `codex` passed a full `npx playwright test` heal-and-recover (broken locator → `HEALED [provider=codex-subscription]` → test green, cache cleared); `kiro` passed the same single-test heal. Verifying them found four bugs, all fixed (see CHANGELOG). Not yet exercised: full `npx playwright test` for `kiro`, and `suggestActionTactic` for both. | ❌ Local-only by design, never in CI |
46
- | Provider: `cursor-subscription` | Local-only subscription provider (Cursor `agent` CLI), `@beta`. | ⚠️ **Partial (2026-08-31)** — `doctor` → `[OK] Connected`, and a real `suggestSelector` returns the correct `{strategy:"ref"}` on many calls. But in a real `npx playwright test` run the heal was declined (`stage=ai_declined`): Cursor's `agent` is an interactive assistant that frequently answers conversationally instead of with JSON, and does so more often than `kiro`/`codex`. Tried `--mode ask`, `--output-format json`, empty `--workspace` — the behaviour is the model's. Shipped `@beta` for user feedback with the safest invocation (`--trust --mode ask --output-format json`, read-only); docs note `kiro`/`codex` are steadier. | ❌ Not in CI |
46
+ | Provider: `cursor-subscription` | Local-only subscription provider (Cursor `agent` CLI), experimental. | ⚠️ **Partial (2026-08-31)** — `doctor` → `[OK] Connected`, and a real `suggestSelector` returns the correct `{strategy:"ref"}` on many calls. But in a real `npx playwright test` run the heal was declined (`stage=ai_declined`): Cursor's `agent` is an interactive assistant that frequently answers conversationally instead of with JSON, and does so more often than `kiro`/`codex`. Tried `--mode ask`, `--output-format json`, empty `--workspace` — the behaviour is the model's. Kept for user feedback with the safest invocation (`--trust --mode ask --output-format json`, read-only); docs mark it experimental and point to `kiro`/`codex`. | ❌ Not in CI |
47
47
  | Provider: `tamash` (no AI) | Zero-dependency rule-based healing. | ✅ Verified against the full test suite in both sample repos (all files, cleared cache, run twice each for stability) | ✅ `test-tamash` added to and passing in both sample repos' CI |
48
48
  | Non-`@playwright/test` runner support (`bindPageActions`/`bindContext`) | Manual binding for Cucumber, Jest, or a plain script. | ✅ Live-verified via the Cucumber sample repo, this session | ✅ The Cucumber sample repo's entire CI run *is* this |
49
49
  | `waitFor()`/`dragTo`/`drop`/`expect()` exclusions | Deliberately never healed — state checks and two-sided actions can't be safely guessed at. | ✅ e2e (`wait-for-not-healed`) | ❌ No CI sample test currently exercises these specifically |
@@ -123,7 +123,7 @@ After the fixes, verified live:
123
123
  returns correct answers on many calls, but a real `npx playwright test` heal was declined
124
124
  (`stage=ai_declined`) — Cursor's `agent` frequently answers conversationally rather than with
125
125
  JSON, more so than `kiro`/`codex`. Not tuned away by `--mode ask` / `--output-format json` /
126
- empty `--workspace`. Ships `@beta` for user feedback; docs note `kiro`/`codex` are steadier.
126
+ empty `--workspace`. Kept as an experimental provider for user feedback; docs note `kiro`/`codex` are steadier.
127
127
 
128
128
  **Suite-level validation of this release's changes** (the `diagnose()` + `doctor` rework, the
129
129
  shared JSON-parser rewrite, `init-skill`, the CLI-provider fixes), run 2026-08-31 against a real
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AA0aA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BlE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAqaA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BlE"}
@@ -315,56 +315,52 @@ function checkActionTimeoutSetup() {
315
315
  return;
316
316
  }
317
317
  }
318
- // Whether the orchestration skill this package ships has actually been copied into the project for
319
- // whichever assistant(s) it uses — and whether that copy is still current. No agent auto-discovers
320
- // a skill inside node_modules, so without this step the skill silently does nothing; `doctor` never
321
- // used to look. Fix is always the same one command: `npx tamash-playwright init-skill`.
318
+ // Whether the orchestration skill this package ships has been copied into the project — into
319
+ // .claude/skills/tamash-playwright/ and/or .agents/skills/tamash-playwright/ (the convention
320
+ // Playwright's own `playwright-cli install --skills` established) and whether it's still current.
321
+ // No agent auto-discovers a skill inside node_modules, so without this step the skill silently does
322
+ // nothing. Fix is always the same one command: `npx tamash-playwright init-skill`.
322
323
  function checkSkillSetup(cwd) {
323
324
  (0, console_style_1.section)('Skill');
324
325
  const version = (0, skill_1.getPackageVersion)();
325
- const detected = new Set((0, skill_1.detectAgents)(cwd).map((a) => a.id));
326
326
  const seen = [];
327
- for (const agent of skill_1.AGENTS) {
328
- const state = (0, skill_1.skillState)(cwd, agent, version);
329
- const isDetected = detected.has(agent.id);
327
+ for (const target of skill_1.TARGETS) {
328
+ const state = (0, skill_1.skillState)(cwd, target, version);
330
329
  if (state.status === 'absent') {
331
- if (!isDetected)
332
- continue; // don't list agents the project doesn't use and hasn't installed
333
- console.log(` ${TAG_WARN} ${agent.label}: in use here, but the tamash-playwright skill isn't installed for it.`);
334
- seen.push('WARN');
335
- continue;
330
+ console.log(` ${TAG_INFO} ${target.label}: not installed.`);
331
+ seen.push('INFO');
336
332
  }
337
- if (state.status === 'current') {
338
- console.log(` ${TAG_OK} ${agent.label}: skill installed and current (v${state.version}).`);
333
+ else if (state.status === 'current') {
334
+ console.log(` ${TAG_OK} ${target.label}: installed and current (v${state.version}).`);
339
335
  seen.push('OK');
340
336
  }
341
337
  else if (state.status === 'outdated') {
342
- console.log(` ${TAG_WARN} ${agent.label}: skill is v${state.installed}, package is v${state.version} — update it.`);
338
+ console.log(` ${TAG_WARN} ${target.label}: v${state.installed} installed, package is v${state.version} — update it.`);
343
339
  seen.push('WARN');
344
340
  }
345
341
  else {
346
- console.log(` ${TAG_INFO} ${agent.label}: skill present but with no version marker (a manual copy?).`);
342
+ console.log(` ${TAG_INFO} ${target.label}: present but with no version marker (a manual copy?).`);
347
343
  seen.push('INFO');
348
344
  }
349
345
  }
346
+ const legacy = (0, skill_1.legacyInstallArtifacts)(cwd);
347
+ for (const p of legacy) {
348
+ console.log(` ${TAG_INFO} Leftover from an older init-skill (safe to delete): ${p}`);
349
+ }
350
+ const anyInstalled = seen.includes('OK') || seen.includes('WARN');
350
351
  const rank = { OK: 0, OFF: 1, INFO: 1, WARN: 2, FAIL: 3 };
351
352
  const worst = seen.reduce((acc, s) => (rank[s] > rank[acc] ? s : acc), 'OK');
352
- if (seen.length === 0) {
353
- console.log(` ${TAG_INFO} No assistant config detected (.claude/, .kiro/, .cursor/, .github/, AGENTS.md) and no skill installed.`);
353
+ if (!anyInstalled) {
354
354
  console.log(' If you use an AI coding assistant, install the workflow skill with:');
355
355
  console.log((0, console_style_1.dim)(' npx tamash-playwright init-skill'));
356
- record('Skill', 'INFO', 'No assistant detected; skill not installed');
356
+ record('Skill', 'INFO', 'Skill not installed (.claude/skills, .agents/skills)');
357
357
  return;
358
358
  }
359
359
  if (worst === 'WARN') {
360
360
  console.log('');
361
- console.log(' Install or refresh it with:');
361
+ console.log(' Refresh it with:');
362
362
  console.log((0, console_style_1.dim)(' npx tamash-playwright init-skill'));
363
- console.log((0, console_style_1.dim)(' (auto-detects the assistant; pass --agent to target one explicitly)'));
364
- record('Skill', 'WARN', 'Skill missing or outdated for a detected assistant — run init-skill');
365
- }
366
- else if (worst === 'INFO') {
367
- record('Skill', 'INFO', 'Skill present but unmanaged (no version marker)');
363
+ record('Skill', 'WARN', 'Installed skill is behind the package version — run init-skill');
368
364
  }
369
365
  else {
370
366
  record('Skill', 'OK', 'Skill installed and current');
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -8,7 +8,7 @@ const USAGE = [
8
8
  'Usage:',
9
9
  ' tamash-playwright doctor [--dir <path>]',
10
10
  ' tamash-playwright apply-heals [--dry-run] [--logs-dir <path>]',
11
- ' tamash-playwright init-skill [--agent claude|kiro|cursor|copilot|agents] [--user] [--force] [--dry-run] [--dir <path>]',
11
+ ' tamash-playwright init-skill [--target claude|agents] [--user] [--force] [--dry-run] [--dir <path>]',
12
12
  ].join('\n');
13
13
  async function main() {
14
14
  const [, , command, ...rest] = process.argv;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,qCAAqC;AACrC,6CAA6C;AAC7C,2CAA2C;AAE3C,MAAM,KAAK,GAAG;IACZ,QAAQ;IACR,2CAA2C;IAC3C,iEAAiE;IACjE,0HAA0H;CAC3H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,MAAM,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,YAAY;YACf,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,qCAAqC;AACrC,6CAA6C;AAC7C,2CAA2C;AAE3C,MAAM,KAAK,GAAG;IACZ,QAAQ;IACR,2CAA2C;IAC3C,iEAAiE;IACjE,uGAAuG;CACxG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,MAAM,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,YAAY;YACf,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,2 @@
1
- import { type AgentId } from './skill';
2
1
  export declare function runInitSkill(args?: string[]): Promise<void>;
3
- export type { AgentId };
4
2
  //# sourceMappingURL=initSkill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initSkill.d.ts","sourceRoot":"","sources":["../../src/cli/initSkill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,OAAO,EAA+G,MAAM,SAAS,CAAC;AAuE5J,wBAAsB,YAAY,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrE;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"initSkill.d.ts","sourceRoot":"","sources":["../../src/cli/initSkill.ts"],"names":[],"mappings":"AA4EA,wBAAsB,YAAY,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrE"}
@@ -7,20 +7,24 @@ exports.runInitSkill = runInitSkill;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const console_style_1 = require("./console-style");
9
9
  const skill_1 = require("./skill");
10
- const VALID_IDS = skill_1.AGENTS.map((a) => a.id).join(' | ');
11
10
  const HELP = `tamash-playwright init-skill — install the orchestration skill for your AI coding assistant
12
11
 
13
12
  Usage: npx tamash-playwright init-skill [options]
14
13
 
15
- --agent <id> Target one assistant: ${VALID_IDS}
16
- (comma-separated or repeated). Omit to auto-detect from the project.
17
- --user Install the Claude/Kiro copy machine-wide (~/.claude, ~/.kiro) instead of the project.
18
- --force Overwrite an existing skill directory that has no version marker (a hand-customized copy).
19
- --dry-run Show what would be written without touching anything.
20
- --dir <path> Treat <path> as the project root instead of the current directory.
21
- --help Show this message.`;
14
+ Installs skills/tamash-playwright/ (SKILL.md + references/) into, by default, BOTH:
15
+ .claude/skills/tamash-playwright/ — Claude Code
16
+ .agents/skills/tamash-playwright/ — the cross-tool standard (Cursor, Copilot, Windsurf, Kiro, …)
17
+ Same content in both; no per-agent format conversion.
18
+
19
+ --target <claude|agents> Install only one of the two locations (default: both).
20
+ --user Install under your home directory (~/.claude, ~/.agents) instead of
21
+ the project — covers every project on the machine.
22
+ --force Overwrite a skill directory that has no version marker (hand-edited).
23
+ --dry-run Show what would be written without touching anything.
24
+ --dir <path> Treat <path> as the project root instead of the current directory.
25
+ --help Show this message.`;
22
26
  function parseArgs(args) {
23
- const agents = [];
27
+ const targets = [];
24
28
  let user = false;
25
29
  let force = false;
26
30
  let dryRun = false;
@@ -28,10 +32,10 @@ function parseArgs(args) {
28
32
  let root = process.cwd();
29
33
  for (let i = 0; i < args.length; i++) {
30
34
  const arg = args[i];
31
- if (arg === '--agent' || arg === '-a') {
35
+ if (arg === '--target' || arg === '--agent' || arg === '-t') {
32
36
  const value = args[++i];
33
37
  if (value) {
34
- agents.push(...value.split(',').map((s) => s.trim()).filter(Boolean));
38
+ targets.push(...value.split(',').map((s) => s.trim()).filter(Boolean));
35
39
  }
36
40
  }
37
41
  else if (arg === '--user') {
@@ -53,37 +57,37 @@ function parseArgs(args) {
53
57
  }
54
58
  }
55
59
  }
56
- return { agents, user, force, dryRun, root, help };
60
+ return { targets, user, force, dryRun, root, help };
57
61
  }
58
62
  function reportLine(result, dryRun) {
59
- const rel = path_1.default.relative(process.cwd(), result.target) || result.target;
63
+ const rel = path_1.default.relative(process.cwd(), result.path) || result.path;
60
64
  const tag = (label) => (dryRun ? `[would ${label}]` : `[${label}]`);
61
65
  switch (result.action) {
62
66
  case 'created':
63
- console.log(` ${(0, console_style_1.green)(tag('create'))} ${result.agent.label} -> ${rel}`);
67
+ console.log(` ${(0, console_style_1.green)(tag('create'))} ${result.target.label} -> ${rel}`);
64
68
  return;
65
69
  case 'updated':
66
- console.log(` ${(0, console_style_1.green)(tag('update'))} ${result.agent.label} -> ${rel}`);
70
+ console.log(` ${(0, console_style_1.green)(tag('update'))} ${result.target.label} -> ${rel}`);
67
71
  return;
68
72
  case 'skipped':
69
- console.log(` ${(0, console_style_1.dim)('[skipped]')} ${result.agent.label} -> ${rel}${result.detail ? ` (${result.detail})` : ''}`);
73
+ console.log(` ${(0, console_style_1.dim)('[skipped]')} ${result.target.label} -> ${rel}${result.detail ? ` (${result.detail})` : ''}`);
70
74
  return;
71
75
  case 'blocked':
72
- console.log(` ${(0, console_style_1.red)('[blocked]')} ${result.agent.label} -> ${rel}${result.detail ? ` — ${result.detail}` : ''}`);
76
+ console.log(` ${(0, console_style_1.red)('[blocked]')} ${result.target.label} -> ${rel}${result.detail ? ` — ${result.detail}` : ''}`);
73
77
  return;
74
78
  }
75
79
  }
76
80
  async function runInitSkill(args = []) {
77
- const { agents: requestedIds, user, force, dryRun, root, help } = parseArgs(args);
81
+ const { targets: requestedIds, user, force, dryRun, root, help } = parseArgs(args);
78
82
  if (help) {
79
83
  console.log(HELP);
80
84
  return;
81
85
  }
82
86
  console.log((0, console_style_1.bold)('tamash-playwright init-skill'));
83
87
  console.log((0, console_style_1.dim)('─'.repeat(28)));
84
- const skillsRoot = (0, skill_1.findSkillsRoot)();
85
- if (!skillsRoot) {
86
- console.error(` ${(0, console_style_1.red)('[FAIL]')} Could not locate the shipped skills/ directory inside the installed package.`);
88
+ const source = (0, skill_1.findSkillSource)();
89
+ if (!source) {
90
+ console.error(` ${(0, console_style_1.red)('[FAIL]')} Could not locate skills/tamash-playwright/ inside the installed package.`);
87
91
  process.exitCode = 1;
88
92
  return;
89
93
  }
@@ -92,35 +96,34 @@ async function runInitSkill(args = []) {
92
96
  if (requestedIds.length > 0) {
93
97
  targets = [];
94
98
  for (const id of requestedIds) {
95
- const agent = (0, skill_1.getAgent)(id);
96
- if (!agent) {
97
- console.error(` ${(0, console_style_1.red)('[FAIL]')} Unknown --agent "${id}". Valid: ${VALID_IDS}`);
99
+ const t = (0, skill_1.getTarget)(id);
100
+ if (!t) {
101
+ console.error(` ${(0, console_style_1.red)('[FAIL]')} Unknown --target "${id}". Valid: claude | agents`);
98
102
  process.exitCode = 1;
99
103
  return;
100
104
  }
101
- if (!targets.includes(agent)) {
102
- targets.push(agent);
105
+ if (!targets.includes(t)) {
106
+ targets.push(t);
103
107
  }
104
108
  }
105
109
  }
106
110
  else {
107
- targets = (0, skill_1.detectAgents)(root);
108
- if (targets.length === 0) {
109
- console.error(` ${(0, console_style_1.yellow)('[WARN]')} Could not detect which assistant this project uses (looked for`);
110
- console.error(' .claude/, .kiro/, .cursor/, .github/copilot-instructions.md, AGENTS.md).');
111
- console.error(` Re-run with --agent <${VALID_IDS}> (comma-separated or repeated).`);
112
- process.exitCode = 1;
113
- return;
114
- }
115
- console.log(` ${(0, console_style_1.cyan)('[INFO]')} Detected: ${targets.map((t) => t.label).join(', ')}`);
116
- console.log((0, console_style_1.dim)(' (pass --agent explicitly to override)'));
111
+ targets = skill_1.TARGETS;
117
112
  }
118
113
  if (dryRun) {
119
114
  console.log((0, console_style_1.dim)(' (--dry-run: nothing will be written)'));
120
115
  }
121
116
  console.log('');
122
- const results = targets.map((agent) => (0, skill_1.installSkill)(agent, { cwd: root, skillsRoot, version, user, force, dryRun }));
117
+ const results = targets.map((t) => (0, skill_1.installSkill)(t, { cwd: root, source, version, user, force, dryRun }));
123
118
  results.forEach((r) => reportLine(r, dryRun));
119
+ const legacy = (0, skill_1.legacyInstallArtifacts)(root);
120
+ if (legacy.length > 0) {
121
+ console.log('');
122
+ console.log(` ${(0, console_style_1.cyan)('[INFO]')} Leftover from an older init-skill — safe to delete by hand:`);
123
+ for (const p of legacy) {
124
+ console.log(` ${p}`);
125
+ }
126
+ }
124
127
  console.log('');
125
128
  if (results.some((r) => r.action === 'blocked')) {
126
129
  console.log(` ${(0, console_style_1.yellow)('One or more targets were blocked — see above.')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"initSkill.js","sourceRoot":"","sources":["../../src/cli/initSkill.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,mDAAsE;AACtE,mCAA4J;AAE5J,MAAM,SAAS,GAAG,cAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEtD,MAAM,IAAI,GAAG;;;;yCAI4B,SAAS;;;;;;oCAMd,CAAC;AAIrC,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,MAAqB,EAAE,MAAe;IACxD,MAAM,GAAG,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;IACzE,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAC5E,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,qBAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC;YACzE,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,qBAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC;YACzE,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,mBAAG,EAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClH,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,mBAAG,EAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClH,OAAO;IACX,CAAC;AACH,CAAC;AAEM,KAAK,uBAAuB,IAAI,GAAa,EAAE;IACpD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAElF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAI,EAAC,8BAA8B,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAA,sBAAc,GAAE,CAAC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,IAAA,mBAAG,EAAC,QAAQ,CAAC,+EAA+E,CAAC,CAAC;QACjH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,yBAAiB,GAAE,CAAC;IAEpC,IAAI,OAAoB,CAAC;IACzB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,KAAK,IAAA,mBAAG,EAAC,QAAQ,CAAC,qBAAqB,EAAE,aAAa,SAAS,EAAE,CAAC,CAAC;gBACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,IAAA,sBAAM,EAAC,QAAQ,CAAC,iEAAiE,CAAC,CAAC;YACtG,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACnG,OAAO,CAAC,KAAK,CAAC,iCAAiC,SAAS,kCAAkC,CAAC,CAAC;YAC5F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,oBAAI,EAAC,QAAQ,CAAC,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,gDAAgD,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,wCAAwC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrH,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,sBAAM,EAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,mBAAG,EAAC,6DAA6D,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,qBAAK,EAAC,OAAO,CAAC,WAAW,OAAO,oEAAoE,CAAC,CAAC;IACzH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"initSkill.js","sourceRoot":"","sources":["../../src/cli/initSkill.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,18 @@
1
- export type AgentId = 'claude' | 'kiro' | 'cursor' | 'copilot' | 'agents';
1
+ export type TargetId = 'claude' | 'agents';
2
2
  export declare function versionMarker(version: string): string;
3
3
  export declare function readVersionMarker(text: string): string | undefined;
4
- export type AgentSpec = {
5
- id: AgentId;
4
+ export type TargetSpec = {
5
+ id: TargetId;
6
6
  label: string;
7
- kind: 'dir' | 'file' | 'append';
8
- target: string;
9
- userTarget?: string;
10
- source: string;
11
- detect: string[];
7
+ /** Path relative to the project root. */
8
+ dir: string;
9
+ /** Same, at the user level — covers every project on the machine at once. */
10
+ userDir: string;
12
11
  };
13
- export declare const AGENTS: AgentSpec[];
14
- export declare function getAgent(id: string): AgentSpec | undefined;
15
- export declare function findSkillsRoot(): string | undefined;
12
+ export declare const TARGETS: TargetSpec[];
13
+ export declare function getTarget(id: string): TargetSpec | undefined;
14
+ export declare function findSkillSource(): string | undefined;
16
15
  export declare function getPackageVersion(): string;
17
- export declare function detectAgents(cwd: string): AgentSpec[];
18
16
  export type SkillState = {
19
17
  status: 'absent';
20
18
  } | {
@@ -27,20 +25,21 @@ export type SkillState = {
27
25
  } | {
28
26
  status: 'unmanaged';
29
27
  };
30
- export declare function skillState(cwd: string, agent: AgentSpec, packageVersion: string): SkillState;
28
+ export declare function skillState(cwd: string, target: TargetSpec, packageVersion: string): SkillState;
31
29
  export type InstallResult = {
32
- agent: AgentSpec;
30
+ target: TargetSpec;
33
31
  action: 'created' | 'updated' | 'skipped' | 'blocked';
34
- target: string;
32
+ path: string;
35
33
  detail?: string;
36
34
  };
37
35
  export type InstallOptions = {
38
36
  cwd: string;
39
- skillsRoot: string;
37
+ source: string;
40
38
  version: string;
41
39
  user?: boolean;
42
40
  force?: boolean;
43
41
  dryRun?: boolean;
44
42
  };
45
- export declare function installSkill(agent: AgentSpec, opts: InstallOptions): InstallResult;
43
+ export declare function installSkill(target: TargetSpec, opts: InstallOptions): InstallResult;
44
+ export declare function legacyInstallArtifacts(cwd: string): string[];
46
45
  //# sourceMappingURL=skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/cli/skill.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAK1E,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAOD,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAId,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEhC,MAAM,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,SAAS,EA2C7B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE1D;AAID,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAWnD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAErD;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAG5B,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CA6B5F;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,aAAa,CAsBlF"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/cli/skill.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAO3C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,QAAQ,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,UAAU,EAa/B,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE5D;AAID,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAMpD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAG5B,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAgB9F;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,aAAa,CAsCpF;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB5D"}
package/dist/cli/skill.js CHANGED
@@ -3,21 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AGENTS = void 0;
6
+ exports.TARGETS = void 0;
7
7
  exports.versionMarker = versionMarker;
8
8
  exports.readVersionMarker = readVersionMarker;
9
- exports.getAgent = getAgent;
10
- exports.findSkillsRoot = findSkillsRoot;
9
+ exports.getTarget = getTarget;
10
+ exports.findSkillSource = findSkillSource;
11
11
  exports.getPackageVersion = getPackageVersion;
12
- exports.detectAgents = detectAgents;
13
12
  exports.skillState = skillState;
14
13
  exports.installSkill = installSkill;
14
+ exports.legacyInstallArtifacts = legacyInstallArtifacts;
15
15
  const fs_1 = __importDefault(require("fs"));
16
16
  const os_1 = __importDefault(require("os"));
17
17
  const path_1 = __importDefault(require("path"));
18
- // A single line written into every install so `doctor` (and a re-run of `init-skill`) can tell
19
- // which package version produced it. `X` is filled in with the real version at write time.
18
+ // A single line written into each install (as .tamash-playwright-skill) so `doctor` and a re-run
19
+ // of `init-skill` can tell which package version produced it.
20
20
  const VERSION_MARKER_PREFIX = 'tamash-playwright-skill-version:';
21
+ const MARKER_FILENAME = '.tamash-playwright-skill';
21
22
  function versionMarker(version) {
22
23
  return `${VERSION_MARKER_PREFIX} ${version}`;
23
24
  }
@@ -25,70 +26,31 @@ function readVersionMarker(text) {
25
26
  const match = text.match(/tamash-playwright-skill-version:\s*(\S+)/);
26
27
  return match ? match[1] : undefined;
27
28
  }
28
- // Wraps the appended block in copilot-instructions.md / AGENTS.md so a later `init-skill` can find
29
- // and replace exactly its own section without disturbing anything else in the file.
30
- const BLOCK_BEGIN = '<!-- BEGIN tamash-playwright skill (managed by `npx tamash-playwright init-skill`) -->';
31
- const BLOCK_END = '<!-- END tamash-playwright skill -->';
32
- exports.AGENTS = [
29
+ exports.TARGETS = [
33
30
  {
34
31
  id: 'claude',
35
- label: 'Claude Code',
36
- kind: 'dir',
37
- target: path_1.default.join('.claude', 'skills', 'tamash-playwright'),
38
- userTarget: path_1.default.join(os_1.default.homedir(), '.claude', 'skills', 'tamash-playwright'),
39
- source: 'tamash-playwright',
40
- detect: ['.claude', 'CLAUDE.md'],
41
- },
42
- {
43
- id: 'kiro',
44
- label: 'Kiro',
45
- kind: 'dir',
46
- target: path_1.default.join('.kiro', 'skills', 'tamash-playwright'),
47
- userTarget: path_1.default.join(os_1.default.homedir(), '.kiro', 'skills', 'tamash-playwright'),
48
- source: 'tamash-playwright',
49
- detect: ['.kiro'],
50
- },
51
- {
52
- id: 'cursor',
53
- label: 'Cursor',
54
- kind: 'file',
55
- target: path_1.default.join('.cursor', 'rules', 'tamash-playwright.mdc'),
56
- source: path_1.default.join('tamash-playwright', 'adapters', 'cursor-tamash-playwright.mdc'),
57
- detect: ['.cursor', '.cursorrules'],
58
- },
59
- {
60
- id: 'copilot',
61
- label: 'GitHub Copilot',
62
- kind: 'append',
63
- target: path_1.default.join('.github', 'copilot-instructions.md'),
64
- source: path_1.default.join('tamash-playwright', 'adapters', 'copilot-instructions-tamash-playwright.md'),
65
- detect: [path_1.default.join('.github', 'copilot-instructions.md'), '.github'],
32
+ label: 'Claude Code (.claude/skills/)',
33
+ dir: path_1.default.join('.claude', 'skills', 'tamash-playwright'),
34
+ userDir: path_1.default.join(os_1.default.homedir(), '.claude', 'skills', 'tamash-playwright'),
66
35
  },
67
36
  {
68
37
  id: 'agents',
69
- label: 'AGENTS.md tools (Antigravity, Gemini CLI, Windsurf, Zed, Aider, …)',
70
- kind: 'append',
71
- target: 'AGENTS.md',
72
- source: path_1.default.join('tamash-playwright', 'adapters', 'AGENTS.md'),
73
- detect: ['AGENTS.md'],
38
+ label: 'cross-tool standard (.agents/skills/)',
39
+ dir: path_1.default.join('.agents', 'skills', 'tamash-playwright'),
40
+ userDir: path_1.default.join(os_1.default.homedir(), '.agents', 'skills', 'tamash-playwright'),
74
41
  },
75
42
  ];
76
- function getAgent(id) {
77
- return exports.AGENTS.find((a) => a.id === id);
43
+ function getTarget(id) {
44
+ return exports.TARGETS.find((t) => t.id === id);
78
45
  }
79
- // The shipped skills/ directory. From dist/cli/skill.js that's <pkg>/skills; kept resilient to the
80
- // occasional flattened layout by walking up until a skills/tamash-playwright/SKILL.md is found.
81
- function findSkillsRoot() {
46
+ // The shipped skills/tamash-playwright/ directory. From dist/cli/skill.js that's <pkg>/skills;
47
+ // kept resilient to the occasional flattened layout by checking one level further up too.
48
+ function findSkillSource() {
82
49
  const candidates = [
83
- path_1.default.resolve(__dirname, '..', '..', 'skills'),
84
- path_1.default.resolve(__dirname, '..', '..', '..', 'skills'),
50
+ path_1.default.resolve(__dirname, '..', '..', 'skills', 'tamash-playwright'),
51
+ path_1.default.resolve(__dirname, '..', '..', '..', 'skills', 'tamash-playwright'),
85
52
  ];
86
- for (const dir of candidates) {
87
- if (fs_1.default.existsSync(path_1.default.join(dir, 'tamash-playwright', 'SKILL.md'))) {
88
- return dir;
89
- }
90
- }
91
- return undefined;
53
+ return candidates.find((dir) => fs_1.default.existsSync(path_1.default.join(dir, 'SKILL.md')));
92
54
  }
93
55
  function getPackageVersion() {
94
56
  const candidates = [
@@ -108,125 +70,83 @@ function getPackageVersion() {
108
70
  }
109
71
  return 'unknown';
110
72
  }
111
- function detectAgents(cwd) {
112
- return exports.AGENTS.filter((agent) => agent.detect.some((rel) => fs_1.default.existsSync(path_1.default.join(cwd, rel))));
113
- }
114
- // Non-destructive: reports what's on disk for one agent, nothing more. Used by `doctor`.
115
- function skillState(cwd, agent, packageVersion) {
116
- const target = path_1.default.join(cwd, agent.target);
117
- if (!fs_1.default.existsSync(target)) {
73
+ // Non-destructive: reports what's on disk for one target. Used by `doctor`.
74
+ function skillState(cwd, target, packageVersion) {
75
+ const dir = path_1.default.join(cwd, target.dir);
76
+ if (!fs_1.default.existsSync(path_1.default.join(dir, 'SKILL.md'))) {
118
77
  return { status: 'absent' };
119
78
  }
120
- let text;
121
- try {
122
- if (agent.kind === 'dir') {
123
- const markerFile = path_1.default.join(target, '.tamash-playwright-skill');
124
- text = fs_1.default.existsSync(markerFile) ? fs_1.default.readFileSync(markerFile, 'utf-8') : '';
125
- }
126
- else {
127
- text = fs_1.default.readFileSync(target, 'utf-8');
128
- }
129
- }
130
- catch {
79
+ const markerFile = path_1.default.join(dir, MARKER_FILENAME);
80
+ if (!fs_1.default.existsSync(markerFile)) {
131
81
  return { status: 'unmanaged' };
132
82
  }
133
- const installed = readVersionMarker(text);
83
+ const installed = readVersionMarker(fs_1.default.readFileSync(markerFile, 'utf-8'));
134
84
  if (!installed) {
135
- // An 'append' target that exists but doesn't contain our block at all is effectively absent.
136
- if (agent.kind === 'append' && !text.includes(BLOCK_BEGIN)) {
137
- return { status: 'absent' };
138
- }
139
85
  return { status: 'unmanaged' };
140
86
  }
141
87
  return installed === packageVersion
142
88
  ? { status: 'current', version: installed }
143
89
  : { status: 'outdated', version: packageVersion, installed };
144
90
  }
145
- function installSkill(agent, opts) {
91
+ function installSkill(target, opts) {
146
92
  const marker = versionMarker(opts.version);
147
- if (opts.user && agent.kind !== 'dir') {
148
- return { agent, action: 'blocked', target: agent.target, detail: '--user only applies to claude and kiro' };
149
- }
150
- const targetPath = opts.user && agent.userTarget ? agent.userTarget : path_1.default.join(opts.cwd, agent.target);
151
- const sourcePath = path_1.default.join(opts.skillsRoot, agent.source);
152
- if (!fs_1.default.existsSync(sourcePath)) {
153
- return { agent, action: 'blocked', target: targetPath, detail: `shipped source missing: ${sourcePath}` };
154
- }
155
- const dryRun = opts.dryRun === true;
156
- if (agent.kind === 'dir') {
157
- return installDir(agent, sourcePath, targetPath, marker, opts.force, dryRun);
158
- }
159
- if (agent.kind === 'file') {
160
- return installFile(agent, sourcePath, targetPath, marker, dryRun);
161
- }
162
- return installAppend(agent, sourcePath, targetPath, marker, dryRun);
163
- }
164
- function installDir(agent, source, target, marker, force, dryRun) {
165
- const existed = fs_1.default.existsSync(target);
93
+ const dest = opts.user ? target.userDir : path_1.default.join(opts.cwd, target.dir);
94
+ const markerFile = path_1.default.join(dest, MARKER_FILENAME);
95
+ const existed = fs_1.default.existsSync(path_1.default.join(dest, 'SKILL.md'));
166
96
  if (existed) {
167
- const markerFile = path_1.default.join(target, '.tamash-playwright-skill');
168
97
  const managed = fs_1.default.existsSync(markerFile);
169
- if (!managed && !force) {
98
+ if (!managed && !opts.force) {
170
99
  return {
171
- agent,
172
- action: 'blocked',
173
100
  target,
174
- detail: 'directory exists without a version marker (hand-customized?) — re-run with --force to overwrite',
101
+ action: 'blocked',
102
+ path: dest,
103
+ detail: 'a skill directory exists here with no version marker (hand-customized?) — re-run with --force to overwrite',
175
104
  };
176
105
  }
177
- if (managed && !force) {
106
+ if (managed && !opts.force) {
178
107
  const installed = readVersionMarker(fs_1.default.readFileSync(markerFile, 'utf-8'));
179
108
  if (installed && `${VERSION_MARKER_PREFIX} ${installed}` === marker) {
180
- return { agent, action: 'skipped', target, detail: 'already up to date' };
109
+ return { target, action: 'skipped', path: dest, detail: 'already up to date' };
181
110
  }
182
111
  }
183
- if (!dryRun) {
184
- fs_1.default.rmSync(target, { recursive: true, force: true });
112
+ if (!opts.dryRun) {
113
+ fs_1.default.rmSync(dest, { recursive: true, force: true });
185
114
  }
186
115
  }
187
- if (!dryRun) {
188
- fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true });
189
- // adapters/ holds the Cursor/Copilot/AGENTS.md variants — irrelevant inside a Claude/Kiro copy.
190
- fs_1.default.cpSync(source, target, {
116
+ if (!opts.dryRun) {
117
+ fs_1.default.mkdirSync(path_1.default.dirname(dest), { recursive: true });
118
+ // adapters/ is legacy (per-agent variants)not part of the .claude/.agents skill layout.
119
+ fs_1.default.cpSync(opts.source, dest, {
191
120
  recursive: true,
192
121
  filter: (src) => path_1.default.basename(src) !== 'adapters',
193
122
  });
194
- fs_1.default.writeFileSync(path_1.default.join(target, '.tamash-playwright-skill'), `${marker}\n`);
123
+ fs_1.default.writeFileSync(markerFile, `${marker}\n`);
195
124
  }
196
- return { agent, action: existed ? 'updated' : 'created', target };
125
+ return { target, action: existed ? 'updated' : 'created', path: dest };
197
126
  }
198
- function installFile(agent, source, target, marker, dryRun) {
199
- const existed = fs_1.default.existsSync(target);
200
- if (!dryRun) {
201
- const body = fs_1.default.readFileSync(source, 'utf-8').replace(/\s*$/, '\n');
202
- const content = `${body}\n<!-- ${marker} -->\n`;
203
- fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true });
204
- fs_1.default.writeFileSync(target, content);
127
+ // Best-effort detection of the pre-0.11.0-beta.8 install shape, so `init-skill`/`doctor` can point
128
+ // users at the stragglers to delete by hand. Returns the leftover paths that exist.
129
+ function legacyInstallArtifacts(cwd) {
130
+ const found = [];
131
+ const mdc = path_1.default.join(cwd, '.cursor', 'rules', 'tamash-playwright.mdc');
132
+ if (fs_1.default.existsSync(mdc)) {
133
+ found.push(path_1.default.join('.cursor', 'rules', 'tamash-playwright.mdc'));
205
134
  }
206
- return { agent, action: existed ? 'updated' : 'created', target };
207
- }
208
- function installAppend(agent, source, target, marker, dryRun) {
209
- const existed = fs_1.default.existsSync(target);
210
- const current = existed ? fs_1.default.readFileSync(target, 'utf-8') : '';
211
- const blockRe = new RegExp(`${escapeRe(BLOCK_BEGIN)}[\\s\\S]*?${escapeRe(BLOCK_END)}`);
212
- const action = blockRe.test(current) || existed ? 'updated' : 'created';
213
- if (!dryRun) {
214
- const adapter = fs_1.default.readFileSync(source, 'utf-8').trim();
215
- const block = `${BLOCK_BEGIN}\n<!-- ${marker} -->\n\n${adapter}\n\n${BLOCK_END}`;
216
- let next;
217
- if (blockRe.test(current)) {
218
- next = current.replace(blockRe, block);
135
+ const kiro = path_1.default.join(cwd, '.kiro', 'skills', 'tamash-playwright', 'SKILL.md');
136
+ if (fs_1.default.existsSync(kiro)) {
137
+ found.push(path_1.default.join('.kiro', 'skills', 'tamash-playwright'));
138
+ }
139
+ for (const rel of [path_1.default.join('.github', 'copilot-instructions.md'), 'AGENTS.md']) {
140
+ const file = path_1.default.join(cwd, rel);
141
+ try {
142
+ if (fs_1.default.existsSync(file) && fs_1.default.readFileSync(file, 'utf-8').includes('BEGIN tamash-playwright skill')) {
143
+ found.push(`${rel} (contains an appended "tamash-playwright skill" block)`);
144
+ }
219
145
  }
220
- else {
221
- const trimmed = current.replace(/\s*$/, '\n');
222
- next = trimmed ? `${trimmed}\n${block}\n` : `${block}\n`;
146
+ catch {
147
+ // unreadable ignore
223
148
  }
224
- fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true });
225
- fs_1.default.writeFileSync(target, next);
226
149
  }
227
- return { agent, action, target };
228
- }
229
- function escapeRe(s) {
230
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
150
+ return found;
231
151
  }
232
152
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/cli/skill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAUxB,+FAA+F;AAC/F,2FAA2F;AAC3F,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;AACjE,uBAA8B,OAAe;IAC3C,OAAO,GAAG,qBAAqB,IAAI,OAAO,EAAE,CAAC;AAC/C,CAAC;AACD,2BAAkC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,mGAAmG;AACnG,oFAAoF;AACpF,MAAM,WAAW,GAAG,wFAAwF,CAAC;AAC7G,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAmB5C,QAAA,MAAM,GAAgB;IACjC;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAC3D,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAC7E,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;KACjC;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QACzD,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAC3E,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,CAAC,OAAO,CAAC;KAClB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,uBAAuB,CAAC;QAC9D,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE,8BAA8B,CAAC;QAClF,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;KACpC;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC;QACvD,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE,2CAA2C,CAAC;QAC/F,MAAM,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,EAAE,SAAS,CAAC;KACrE;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,oEAAoE;QAC3E,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE,WAAW,CAAC;QAC/D,MAAM,EAAE,CAAC,WAAW,CAAC;KACtB;CACF,CAAC;AAEF,kBAAyB,EAAU;IACjC,OAAO,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,mGAAmG;AACnG,gGAAgG;AAChG;IACE,MAAM,UAAU,GAAG;QACjB,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;QAC7C,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;KACpD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YACnE,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;IACE,MAAM,UAAU,GAAG;QACjB,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;QACnD,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;KAC1D,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAwC,CAAC;YAC9F,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxE,OAAO,GAAG,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sBAA6B,GAAW;IACtC,OAAO,QAAA,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAQD,yFAAyF;AACzF,oBAA2B,GAAW,EAAE,KAAgB,EAAE,cAAsB;IAC9E,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;YACjE,IAAI,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,6FAA6F;QAC7F,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,KAAK,cAAc;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACjE,CAAC;AAkBD,sBAA6B,KAAgB,EAAE,IAAoB;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAC9G,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxG,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,UAAU,EAAE,EAAE,CAAC;IAC3G,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IACpC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CAAC,KAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,KAAe,EAAE,MAAgB;IACrH,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO;gBACL,KAAK;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,iGAAiG;aAC1G,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1E,IAAI,SAAS,IAAI,GAAG,qBAAqB,IAAI,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;gBACpE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,YAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,gGAAgG;QAChG,YAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;YACxB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU;SACnD,CAAC,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,WAAW,CAAC,KAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,MAAgB;IACrG,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,GAAG,IAAI,UAAU,MAAM,QAAQ,CAAC;QAChD,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,YAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,MAAgB;IACvG,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,MAAM,GAA4B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,WAAW,UAAU,MAAM,WAAW,OAAO,OAAO,SAAS,EAAE,CAAC;QACjF,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;QAC3D,CAAC;QACD,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,YAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/cli/skill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAiBxB,iGAAiG;AACjG,8DAA8D;AAC9D,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;AACjE,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAEnD,uBAA8B,OAAe;IAC3C,OAAO,GAAG,qBAAqB,IAAI,OAAO,EAAE,CAAC;AAC/C,CAAC;AACD,2BAAkC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAWY,QAAA,OAAO,GAAiB;IACnC;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,+BAA+B;QACtC,GAAG,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QACxD,OAAO,EAAE,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;KAC3E;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,uCAAuC;QAC9C,GAAG,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QACxD,OAAO,EAAE,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC;KAC3E;CACF,CAAC;AAEF,mBAA0B,EAAU;IAClC,OAAO,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,+FAA+F;AAC/F,0FAA0F;AAC1F;IACE,MAAM,UAAU,GAAG;QACjB,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC;QAClE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC;KACzE,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;IACE,MAAM,UAAU,GAAG;QACjB,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;QACnD,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;KAC1D,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAwC,CAAC;YAC9F,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxE,OAAO,GAAG,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,4EAA4E;AAC5E,oBAA2B,GAAW,EAAE,MAAkB,EAAE,cAAsB;IAChF,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,KAAK,cAAc;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACjE,CAAC;AAkBD,sBAA6B,MAAkB,EAAE,IAAoB;IACnE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,4GAA4G;aACrH,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1E,IAAI,SAAS,IAAI,GAAG,qBAAqB,IAAI,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;gBACpE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;YACjF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,YAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,2FAA2F;QAC3F,YAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;YAC3B,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU;SACnD,CAAC,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC;AAED,mGAAmG;AACnG,oFAAoF;AACpF,gCAAuC,GAAW;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACxE,IAAI,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAChF,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;gBACpG,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,yDAAyD,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tamash-playwright",
3
- "version": "0.11.0-beta.7",
3
+ "version": "0.11.0",
4
4
  "description": "Plug and Play Self-healing for Playwright and automatically recovers broken selectors using an AI model (Ollama, OpenAI, Anthropic, Gemini, or a Claude/GitHub Copilot subscription).",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,50 +29,22 @@ Don't guess which one applies from what the user says or how the project looks
29
29
 
30
30
  ## Getting this skill into a project
31
31
 
32
- No coding agent auto-discovers a skill bundled inside an npm package's `node_modules` — this is always a real, explicit one-time step after `npm install tamash-playwright`, never automatic.
33
-
34
- **The easy way:**
32
+ No coding agent auto-discovers a skill bundled inside `node_modules` — it's one explicit step after `npm install tamash-playwright`:
35
33
 
36
34
  ```bash
37
35
  npx tamash-playwright init-skill
38
36
  ```
39
37
 
40
- It auto-detects the agent(s) the project uses and installs the right file for each, with a version marker so `npx tamash-playwright doctor` can flag when it's fallen behind the installed package (re-run `init-skill` to refresh). `--agent <claude|kiro|cursor|copilot|agents>` targets one explicitly; `--user` installs the Claude/Kiro copy machine-wide; `--force` overwrites a hand-customized skill directory.
38
+ That copies this directory (`SKILL.md` + `references/`) into **both** standard locations the same convention Playwright's own `playwright-cli install --skills` uses:
41
39
 
42
- **By hand**, if you prefer the step depends on which agent(s) the project uses:
40
+ - `.claude/skills/tamash-playwright/`Claude Code
41
+ - `.agents/skills/tamash-playwright/` — the emerging cross-tool standard (Cursor, GitHub Copilot, Windsurf, Kiro, Zed, and others read here)
43
42
 
44
- **Claude Code** same rich format, copy as-is:
43
+ Same content in both; there's no per-agent format conversion. `--target claude` or `--target agents` installs just one; `--user` installs under your home directory to cover every project on the machine; `--force` overwrites a hand-edited copy. A version marker is written so `npx tamash-playwright doctor` can flag when the installed skill has fallen behind the package — re-run `init-skill` to refresh.
45
44
 
46
- ```bash
47
- mkdir -p .claude/skills
48
- cp -r node_modules/tamash-playwright/skills/tamash-playwright .claude/skills/tamash-playwright
49
- ```
50
-
51
- **Kiro** — identical `SKILL.md` format to Claude Code, just a different root directory:
45
+ By hand, if you prefer:
52
46
 
53
47
  ```bash
54
- mkdir -p .kiro/skills
55
- cp -r node_modules/tamash-playwright/skills/tamash-playwright .kiro/skills/tamash-playwright
48
+ mkdir -p .agents/skills
49
+ cp -r node_modules/tamash-playwright/skills/tamash-playwright .agents/skills/tamash-playwright
56
50
  ```
57
-
58
- **Cursor** — its own rule format (`.mdc`, with frontmatter Cursor uses to decide when to attach it):
59
-
60
- ```bash
61
- mkdir -p .cursor/rules
62
- cp node_modules/tamash-playwright/skills/tamash-playwright/adapters/cursor-tamash-playwright.mdc .cursor/rules/
63
- ```
64
-
65
- **GitHub Copilot** — append (or create) its single instructions file:
66
-
67
- ```bash
68
- cat node_modules/tamash-playwright/skills/tamash-playwright/adapters/copilot-instructions-tamash-playwright.md >> .github/copilot-instructions.md
69
- ```
70
-
71
- **Antigravity, Gemini CLI, Windsurf, Zed, Aider, and other `AGENTS.md`-reading tools** — one file covers all of them:
72
-
73
- ```bash
74
- cp node_modules/tamash-playwright/skills/tamash-playwright/adapters/AGENTS.md ./AGENTS.md
75
- # or, if AGENTS.md already exists, append its content instead of overwriting
76
- ```
77
-
78
- Any of the copy targets above (`.claude/skills/`, `.kiro/skills/`) can also be done once at the user level (`~/.claude/skills/tamash-playwright`, `~/.kiro/skills/tamash-playwright`) to cover every project on the machine instead of one at a time.
@@ -18,9 +18,9 @@ Ask the user which they want — don't assume:
18
18
  - **Free, fastest to start**: Ollama Cloud (`HEALER_PROVIDER=ollama`) — a free API key from `ollama.com/settings/keys`.
19
19
  - **An API-key provider they already pay for**: `openai` / `anthropic` / `gemini`.
20
20
  - **A subscription they already have, no API key**: `claude-subscription` or `copilot-subscription` — work both locally and in CI (TypeScript only).
21
- - **A Cursor, Kiro, or Codex subscription instead**: `cursor-subscription` / `kiro-subscription` / `codex-subscription` (all `@beta`, TypeScript only) — **local development only, never CI** (no confirmed unattended-CI auth token). All three run their CLI in a read-only mode (Cursor `--mode ask`, Codex `codex exec`'s sandbox, Kiro grants no tool trust), so a heal call can't edit files or run commands. `kiro`/`codex` answer cleanly in a few seconds; `cursor`'s `agent` is an interactive assistant that sometimes replies conversationally instead of with JSON (`stage=ai_declined`), so `kiro`/`codex` are the smoother choice.
22
- - **Free, zero-AI, no network call**: `tamash` (currently `@beta` `npm install tamash-playwright@beta`) — text-matches `.describe()` against the page's own accessibility tree, never guesses; a narrower success rate than an AI provider but no cost and no key at all.
23
- - **Their own self-hosted Ollama server**: `ollama-local` (also `@beta`) — same shape as `ollama` but points at their own server instead of Ollama Cloud; `OLLAMA_LOCAL_API_KEY` is optional, only needed if their deployment sits behind an auth gateway.
21
+ - **A Kiro or Codex subscription instead**: `kiro-subscription` / `codex-subscription` (TypeScript only) — **local development only, never CI** (no confirmed unattended-CI auth token). Both run their CLI in a read-only mode (Codex `codex exec`'s sandbox, Kiro grants no tool trust), so a heal call can't edit files or run commands, and both answer cleanly in a few seconds. There's also `cursor-subscription`, but Cursor's `agent` is an interactive assistant that often replies conversationally instead of with the JSON the healer needs (`stage=ai_declined`) prefer `kiro`/`codex`.
22
+ - **Free, zero-AI, no network call**: `tamash` — text-matches `.describe()` against the page's own accessibility tree, never guesses; a narrower success rate than an AI provider but no cost and no key at all.
23
+ - **Their own self-hosted Ollama server**: `ollama-local` — same shape as `ollama` but points at their own server instead of Ollama Cloud; `OLLAMA_LOCAL_API_KEY` is optional, only needed if their deployment sits behind an auth gateway.
24
24
 
25
25
  Write (or update) `.env` from `.env.example` with their choice. **Never handle the real API key value yourself** — write the variable name with an empty value and have the user paste the real key into the file directly. Never echo a key back in chat, a commit message, a log line, or a report.
26
26
 
package/usage.md CHANGED
@@ -136,7 +136,7 @@ npx tamash-playwright doctor
136
136
  | 3 | Vision capability | Checks by name whether your configured model is expected to support the screenshot fallback. |
137
137
  | 4 | Missing `.describe()` | Scans `tests/` (or `--dir <path>`) for locators without a label, raw CSS/XPath first. |
138
138
  | 5 | Inline locators | Flags locators written directly in test files rather than a Page Object class. |
139
- | 6 | Skill installation | Whether the orchestration skill (below) is installed for the assistant(s) the project uses, and still current. Missing/outdated for a detected assistant → `[WARN]` with `npx tamash-playwright init-skill`. |
139
+ | 6 | Skill installation | Whether the orchestration skill (below) is installed in `.claude/skills/` / `.agents/skills/`, and still current. Behind the package version → `[WARN]` with `npx tamash-playwright init-skill`. |
140
140
 
141
141
  If it finds issues, the fastest fix is to open the project in an AI coding assistant and ask it to address what's flagged — add `.describe()` calls, or extract locators into Page Objects. A standing rule in that assistant's instructions file (`CLAUDE.md`, `.cursor/rules`, etc.) keeps it doing both automatically going forward.
142
142
 
@@ -567,9 +567,10 @@ The same detail prints to the console as it happens:
567
567
  | `npx tamash-playwright apply-heals` | `--dry-run` | Preview fixes without writing anything (including `verify-heals.cjs` — see below). |
568
568
  | | `--logs-dir <path>` | Merge every `heals.jsonl` found under `<path>` (any nesting) instead of the local log — for sharded CI. |
569
569
  | | `--yes` / `-y` | Skip the confirmation prompt in a real terminal too (already skipped automatically in CI/non-interactive runs). |
570
- | `npx tamash-playwright init-skill` | `--agent <id>` | Install the orchestration skill (below) for one assistant — `claude` \| `kiro` \| `cursor` \| `copilot` \| `agents`, comma-separated or repeated. Omit to auto-detect. |
571
- | | `--user` | Install the Claude/Kiro copy machine-wide (`~/.claude/skills/…`) instead of into the project. |
572
- | | `--force` | Overwrite an existing skill directory that has no version marker (a hand-customized copy). |
570
+ | `npx tamash-playwright init-skill` | | Copy the skill into `.claude/skills/tamash-playwright/` and `.agents/skills/tamash-playwright/` (both, by default). |
571
+ | | `--target <id>` | Install only one `claude` or `agents`. |
572
+ | | `--user` | Install under your home directory (`~/.claude/skills/…`, `~/.agents/skills/…`) instead of the project. |
573
+ | | `--force` | Overwrite an existing skill directory that has no version marker (a hand-edited copy). |
573
574
  | | `--dry-run` | Show what would be written without touching anything. |
574
575
  | | `--dir <path>` | Treat `<path>` as the project root instead of the current directory. |
575
576
 
@@ -585,17 +586,16 @@ No agent auto-discovers a skill sitting in `node_modules`, so it's one explicit
585
586
  npx tamash-playwright init-skill
586
587
  ```
587
588
 
588
- This auto-detects the assistant(s) the project uses and installs the right thing for each:
589
+ This copies the skill (`SKILL.md` + `references/`) into **both** standard locations the same convention Playwright's own `playwright-cli install --skills` uses:
589
590
 
590
- | Agent | Where it goes | Format |
591
- |---|---|---|
592
- | Claude Code | `.claude/skills/tamash-playwright/` | `SKILL.md` + linked `references/` (`adapters/` is not copied) |
593
- | Kiro | `.kiro/skills/tamash-playwright/` | Identical `SKILL.md` formatsame files, different root |
594
- | Cursor | `.cursor/rules/tamash-playwright.mdc` | Cursor's own rule format (from `skills/tamash-playwright/adapters/cursor-tamash-playwright.mdc`) |
595
- | GitHub Copilot | A managed block appended to `.github/copilot-instructions.md` | Plain markdown (from `skills/tamash-playwright/adapters/copilot-instructions-tamash-playwright.md`) |
596
- | Antigravity, Gemini CLI, Windsurf, Zed, Aider, and other `AGENTS.md`-reading tools | A managed block appended to `AGENTS.md` at the project root | Plain markdown (from `skills/tamash-playwright/adapters/AGENTS.md`) |
591
+ | Location | Read by |
592
+ |---|---|
593
+ | `.claude/skills/tamash-playwright/` | Claude Code |
594
+ | `.agents/skills/tamash-playwright/` | the emerging cross-tool standard Cursor, GitHub Copilot, Windsurf, Kiro, Zed, and others |
597
595
 
598
- Every install carries a `tamash-playwright-skill-version:` marker so `doctor` can tell you when it's behind the installed package — re-run `init-skill` to refresh it (managed blocks are replaced in place, never duplicated). Use `--agent <id>` to target one explicitly, `--user` for a machine-wide Claude/Kiro copy, `--force` to overwrite a hand-customized skill directory. The equivalent by-hand copy commands are in [skills/tamash-playwright/SKILL.md](skills/tamash-playwright/SKILL.md).
596
+ Same content in both; no per-agent format conversion. Each install carries a `tamash-playwright-skill-version:` marker so `doctor` flags when it's behind the installed package — re-run `init-skill` to refresh. `--target claude` / `--target agents` installs one; `--user` installs under your home directory; `--force` overwrites a hand-edited copy. By-hand instructions are in [skills/tamash-playwright/SKILL.md](skills/tamash-playwright/SKILL.md).
597
+
598
+ > **Upgrading from an earlier beta?** `init-skill` used to also write a `.cursor/rules/tamash-playwright.mdc` and append a block to `.github/copilot-instructions.md` / `AGENTS.md`. Those aren't produced any more — `init-skill` and `doctor` will point out any leftovers so you can delete them.
599
599
 
600
600
  ## License
601
601
 
@@ -1,11 +0,0 @@
1
- # tamash-playwright
2
-
3
- This project uses `tamash-playwright` for self-healing Playwright tests. If you're working on test files, `playwright.config.ts`, or anything under `.tamash-playwright/`, follow this before making changes:
4
-
5
- 1. Run `npx tamash-playwright doctor` first — always, don't assume the project's state.
6
- 2. **Any `[FAIL]`/`[WARN]`** (no AI provider configured, missing `actionTimeout`, locators without `.describe()`, inline locators) → the project hasn't adopted tamash-playwright's standards yet. Follow `node_modules/tamash-playwright/skills/tamash-playwright/references/onboarding.md`.
7
- 3. **All `[OK]`**, and the test suite has run recently with healing enabled → review, apply, verify, and land whatever healed by following `node_modules/tamash-playwright/skills/tamash-playwright/references/heal.md`.
8
-
9
- Both reference docs are self-contained: what to run, how to interpret the output, and exactly when to pause and ask before continuing (never commit or open a pull request without asking first, no matter how clean a run was).
10
-
11
- This file is generic on purpose — it's read by whichever coding agent is active in this workspace (Cursor, Copilot, Antigravity, Gemini CLI, Windsurf, or another AGENTS.md-compatible tool). Claude Code and Kiro have their own richer, conditionally-loaded copy of the same instructions under `.claude/skills/tamash-playwright/` / `.kiro/skills/tamash-playwright/` — if you're one of those two, prefer that copy over this file.
@@ -1,12 +0,0 @@
1
- <!--
2
- Append this section to the project's .github/copilot-instructions.md
3
- (or drop it in as the whole file if one doesn't exist yet).
4
- -->
5
-
6
- ## tamash-playwright — self-healing Playwright workflow
7
-
8
- This project uses `tamash-playwright`. Before changing test files, `playwright.config.ts`, or anything under `.tamash-playwright/`:
9
-
10
- 1. Run `npx tamash-playwright doctor` first — always, don't assume the project's current state.
11
- 2. Any `[FAIL]`/`[WARN]` → follow `node_modules/tamash-playwright/skills/tamash-playwright/references/onboarding.md` to bring the project up to standard (AI provider setup, `actionTimeout`, `.describe()` labels, Page Object extraction — each with how to confirm the fix worked).
12
- 3. All `[OK]`, and the suite has run recently with healing on → follow `node_modules/tamash-playwright/skills/tamash-playwright/references/heal.md` to review, apply, verify, and land whatever healed. It's a gated loop: most runs go start to finish with no interruption, but it always pauses before landing anything — never commit or open a pull request on its own.
@@ -1,14 +0,0 @@
1
- ---
2
- description: Set up and run tamash-playwright's self-healing workflow locally — onboard the project to its standards, then review/apply/verify/land runtime heals. Apply when working on Playwright test files, playwright.config.ts, or anything under .tamash-playwright/.
3
- globs: ["**/*.spec.ts", "**/*.test.ts", "playwright.config.ts", ".tamash-playwright/**"]
4
- alwaysApply: false
5
- ---
6
-
7
- # tamash-playwright — local self-healing workflow
8
-
9
- Run `npx tamash-playwright doctor` first — always, don't assume the project's state from context alone.
10
-
11
- - **Any `[FAIL]`/`[WARN]`** → the project hasn't adopted tamash-playwright's standards yet. Follow `node_modules/tamash-playwright/skills/tamash-playwright/references/onboarding.md` (no AI provider configured, missing `actionTimeout`, locators missing `.describe()`, inline locators that should be in a Page Object — each one's fix and how to confirm it worked is in that file).
12
- - **All `[OK]`**, and the suite has run recently with healing enabled → follow `node_modules/tamash-playwright/skills/tamash-playwright/references/heal.md` — a gated loop (run → review → apply → verify → land) that only pauses for you at two points: a genuinely ambiguous fix, or anything after a failed verification. Everything else proceeds on its own.
13
-
14
- Never commit or open a pull request without asking first, no matter how clean a run was — that gate never auto-continues.