@uinaf/skillcheck 0.5.2 → 0.5.4

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/dist/cli.js CHANGED
@@ -61,6 +61,7 @@ function stateDirs(root) {
61
61
  function runOptions(flags) {
62
62
  const harness = flags.get("--harness") ?? "claude";
63
63
  if (harness !== "claude" && harness !== "codex" && harness !== "cursor") fail(`--harness must be claude, codex, or cursor, got ${harness}`);
64
+ if (flags.has("--max-turns") && harness !== "claude") fail("--max-turns is only supported with --harness claude");
64
65
  const agent = flags.get("--agent");
65
66
  const judgeModel = flags.get("--judge") ?? "claude-opus-5";
66
67
  const judgeEffort = flags.get("--judge-effort");
package/docs/releasing.md CHANGED
@@ -6,7 +6,7 @@ A push to `main` runs one workflow, `.github/workflows/release.yml`:
6
6
 
7
7
  ```text
8
8
  verify ──┐
9
- ├──> release npm publish, OIDC + uinaf-releaser (release environment)
9
+ ├──> release npm publish, OIDC + uinaf-ci (release environment)
10
10
  scan ────┘
11
11
  ```
12
12
 
@@ -20,15 +20,15 @@ The file name `release.yml` is load-bearing. See below.
20
20
  ## npm
21
21
 
22
22
  `@uinaf/skillcheck` publishes from `.github/workflows/release.yml` via npm
23
- Trusted Publishing (OIDC) and the `uinaf-releaser` GitHub App. There is no npm
23
+ Trusted Publishing (OIDC) and the `uinaf-ci` GitHub App. There is no npm
24
24
  token in this repository, in its environments, or in the organization.
25
25
 
26
26
  Required on the `release` GitHub Environment:
27
27
 
28
- | Name | Kind | Purpose |
29
- | ------------------------------- | ------ | ------------------------------------------- |
30
- | `UINAF_RELEASE_APP_CLIENT_ID` | var | GitHub App client id for the releaser bot |
31
- | `UINAF_RELEASE_APP_PRIVATE_KEY` | secret | GitHub App private key for the releaser bot |
28
+ | Name | Kind | Purpose |
29
+ | -------------------------- | ------ | ------------------------------------------- |
30
+ | `UINAF_CI_APP_CLIENT_ID` | var | GitHub App client id for the releaser bot |
31
+ | `UINAF_CI_APP_PRIVATE_KEY` | secret | GitHub App private key for the releaser bot |
32
32
 
33
33
  The trusted publisher on npmjs.com is registered by **file path**, so
34
34
  `.github/workflows/release.yml` cannot be renamed or moved without editing that
@@ -40,6 +40,7 @@ Deleting the `release` environment deletes both rows above with it, and there is
40
40
  no repo-level fallback: `create-github-app-token` then runs with empty inputs
41
41
  and the job fails at that step. The private key cannot be read back from
42
42
  GitHub; recreating it means generating a new one in the App settings.
43
+ The App private key lives on the `release` Environment; the shared release-npm job binds that Environment, so GitHub substitutes the Environment value for the secret named in `release.yml`.
43
44
 
44
45
  ## Version history
45
46
 
@@ -48,11 +49,20 @@ history continues from `v0.1.3`; `v0.1.0`–`v0.1.3` are the legacy git-install
48
49
  tags and are never deleted or moved.
49
50
 
50
51
  During preparation, `@semantic-release/npm` stages the released `package.json`
51
- version and `@jno21/semantic-release-github-commit` commits it to `main` through
52
- GitHub's API as the authenticated App. GitHub signs that commit, and the release
53
- tag points to it. The `[skip ci]` marker on that commit is what stops a release
52
+ version and `scripts/release-commit.ts` commits it through GitHub's signed
53
+ `createCommitOnBranch` API as the authenticated App. The checkout and expected
54
+ branch head are the verified workflow event SHA. GitHub atomically rejects the
55
+ write if `main` has advanced; a successful response is fetched by its immutable
56
+ commit SHA. The plugin checks its parent, unchanged source, and exact prepared
57
+ manifest before semantic-release tags it. Only the package version may change. The `[skip ci]` marker on that commit is what stops a release
54
58
  from releasing itself.
55
59
 
60
+ If GitHub accepts the commit but fetching or validating it fails, preparation
61
+ stops before tagging or publishing. Inspect that commit's parent, tree, version
62
+ and verified signature, plus existing tags, npm versions and GitHub Releases,
63
+ before recovery. Reconcile only missing publication steps from the validated
64
+ commit; do not create another version or move an existing tag to hide failure.
65
+
56
66
  Check what the next version would be without publishing anything:
57
67
 
58
68
  ```sh
@@ -61,7 +71,7 @@ pnpm dlx semantic-release --dry-run --no-ci
61
71
 
62
72
  ## The artifact
63
73
 
64
- `dist/` is generated and untracked. `prepublishOnly` runs `pnpm run verify`,
74
+ `dist/` is generated and untracked. `prepublishOnly` runs `pnpm run verify:full`,
65
75
  which builds it, so the tarball is always packed from a tree that just passed
66
76
  the gate. `files` is `dist`, `docs`, `README.md`, `LICENSE`.
67
77
 
package/docs/usage.md CHANGED
@@ -32,7 +32,8 @@ clean, 1 with findings.
32
32
 
33
33
  ```sh
34
34
  skillcheck run skills/<skill>/evals/<scenario>
35
- skillcheck run <scenario-dir> --agent MODEL --judge MODEL --harness codex --max-turns 80
35
+ skillcheck run <scenario-dir> --agent MODEL --judge MODEL --harness codex
36
+ skillcheck run <scenario-dir> --harness claude --max-turns 80
36
37
  ```
37
38
 
38
39
  Materializes the scenario into `<root>/.skillcheck/scratch/<name>/workdir`,
@@ -47,8 +48,9 @@ message, and writes no provenance sidecar. It is never reported as
47
48
  `FAIL score=0.0000`; only a real judged verdict can fail a run.
48
49
 
49
50
  Defaults: `--harness claude`, agent `claude-opus-5`, judge `claude-opus-5`,
50
- `--max-turns 50`. On the codex and cursor harnesses, omitting `--agent` leaves
51
- the model to that CLI's own default.
51
+ and a Claude agent limit of 50 turns. `--max-turns` changes that limit only for
52
+ Claude; passing it with `codex` or `cursor` fails before the eval starts. On
53
+ those harnesses, omitting `--agent` leaves the model to that CLI's own default.
52
54
 
53
55
  `--harness cursor` drives the scenario through the Cursor Agent CLI
54
56
  (`cursor-agent` on PATH) with the skill installed under `.cursor/skills/`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uinaf/skillcheck",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "Lint and eval harness for agent skills",
5
5
  "homepage": "https://github.com/uinaf/skillcheck#readme",
6
6
  "bugs": {