harness-alchemist 0.1.2 → 0.1.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.
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "harness-alchemist",
4
4
  "displayName": "Harness Alchemist",
5
- "version": "0.1.2",
5
+ "version": "0.1.4",
6
6
  "description": "Scaffold, validate, and publish portable coding-agent plugins across Claude Code, Codex, OpenCode, Antigravity, and DeepSeek Harness.",
7
7
  "author": {
8
8
  "name": "Haochuan Zhang"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-alchemist",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Scaffold, validate, and publish portable coding-agent plugins across Claude Code, Codex, OpenCode, Antigravity, and DeepSeek Harness.",
5
5
  "author": {
6
6
  "name": "Haochuan Zhang",
package/lib/create.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { randomUUID } from "node:crypto"
4
4
  import { existsSync } from "node:fs"
5
- import { cp, mkdir, readdir, readFile, rename, rm, rmdir, stat, writeFile } from "node:fs/promises"
5
+ import { chmod, cp, mkdir, readdir, readFile, rename, rm, rmdir, stat, writeFile } from "node:fs/promises"
6
6
  import { basename, dirname, join, resolve } from "node:path"
7
7
  import { fileURLToPath } from "node:url"
8
8
  import { spawnSync } from "node:child_process"
@@ -291,6 +291,12 @@ export async function runCreate(argv) {
291
291
  const localScripts = join(staging, ".agents/skills", `develop-${options.name}`, "scripts")
292
292
  await mkdir(localScripts, { recursive: true })
293
293
  await cp(join(projectRoot, "lib/validate.mjs"), join(localScripts, "validate.mjs"))
294
+ const skillScripts = join(staging, "skills", options.name, "scripts")
295
+ if (existsSync(skillScripts)) {
296
+ for (const entry of await readdir(skillScripts)) {
297
+ await chmod(join(skillScripts, entry), 0o755)
298
+ }
299
+ }
294
300
  await writeFile(join(staging, "LICENSE"), await licenseText(canonicalRoot, options))
295
301
 
296
302
  const validation = spawnSync(process.execPath, [join(projectRoot, "lib/validate.mjs"), staging], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-alchemist",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Scaffold, validate, and publish portable coding-agent plugins across Claude Code, Codex, OpenCode, Antigravity, and DeepSeek Harness.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,13 +45,14 @@ The package root exports OpenCode. The `./deepseek` subpath exports Cordis. Keep
45
45
 
46
46
  ## GitHub Release Publishing
47
47
 
48
- `.github/workflows/npm-publish.yml` publishes when a GitHub release is
49
- published. Tag the release as `vX.Y.Z` (or a semver prerelease such as
50
- `vX.Y.Z-rc.1`); the workflow applies that version to `package.json`, runs
48
+ `.github/workflows/npm-publish.yml` publishes when a `vX.Y.Z` tag is pushed
49
+ (or a GitHub release with a semver tag such as `vX.Y.Z-rc.1` is published);
50
+ the workflow applies that version to `package.json`, runs
51
51
  `npm run sync`, verifies the package, and publishes it with npm provenance.
52
52
 
53
53
  Configure the repository `NPM_TOKEN` secret with an npm publish token before
54
- creating a release. The workflow never publishes from pull requests or pushes.
54
+ pushing the tag. The workflow never publishes from pull requests or branch
55
+ pushes.
55
56
 
56
57
  ## Public Catalog Metadata
57
58
 
@@ -3,6 +3,9 @@ name: Publish npm package
3
3
  on:
4
4
  release:
5
5
  types: [published]
6
+ push:
7
+ tags:
8
+ - "v*"
6
9
 
7
10
  permissions:
8
11
  contents: read
@@ -22,7 +25,7 @@ jobs:
22
25
  id: version
23
26
  shell: bash
24
27
  run: |
25
- TAG="${{ github.event.release.tag_name }}"
28
+ TAG="${{ github.event.release.tag_name || github.ref_name }}"
26
29
  VERSION="${TAG#v}"
27
30
  if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then
28
31
  echo "::error::Tag '$TAG' is not a valid semver version"
@@ -16,10 +16,11 @@ Apply the {{DISPLAY_NAME}} workflow to the user's request.
16
16
  2. Run the skill entrypoint to perform the smallest complete change:
17
17
 
18
18
  ```
19
- echo '{"request": "..."}' | scripts/main.mjs
19
+ echo '{"request": "..."}' | node scripts/main.mjs
20
20
  ```
21
21
 
22
- When Python 3.10+ is available, `scripts/main.py` behaves identically.
22
+ When Python 3.10+ is available, `echo '{"request": "..."}' | python3 scripts/main.py`
23
+ behaves identically.
23
24
  3. Interpret the JSON result; both entrypoints return `{"ok": true, ...}` on
24
25
  success and exit non-zero with a stderr diagnostic on failure.
25
26
  4. Use harness-provided tools only when they are needed for the workflow.