Skill Open Sourcer
Publish every public Skill from the single canonical repository: https://github.com/zjp1997720/zhijian-skills.
Hard publishing boundary
- A
SKILL.md path or Skill directory is an import candidate, not a request to create a repository.
- Put the complete agent payload in
skills/<name>/, human docs in docs/skills/<name>/, and release notes in docs/changelogs/<name>.md.
- Register the Skill in
registry/skills.json. Never add mirror, mirror_tag, standalone repository, redirect workflow, or mirror-export metadata.
- Publish commits, per-Skill Tags, and install instructions only from
zjp1997720/zhijian-skills.
- Stop on secrets, private paths, client data, unpublished proprietary material, unclear asset ownership, or an unverified canonical remote.
Read Portfolio mode, Registry contract, Release package, and README design before writing.
Workflow
- Resolve the input to a real Skill directory. Accept a
SKILL.md, its containing directory, or a symlink from a local Skill root.
- Resolve the canonical checkout from the current repository,
ZHIJIAN_SKILLS_REPO, or ~/Documents/GitHub/zhijian-skills. Verify origin resolves to zjp1997720/zhijian-skills; never guess another destination.
- Follow the canonical repository's Git synchronization rules. Run
git_sync_guard.py check --repo <zhijian-skills> before changing or publishing from an existing checkout; a needs-sync marker is a hard stop. Then run:
SKILL_OPEN_SOURCER_DIR="<zhijian-skills>/skills/skill-open-sourcer"
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/check_release_env.py" \
--repo-dir <zhijian-skills> --check-npx-skills
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/scan_skill_release.py" \
/path/to/skill-or-SKILL.md
- Inspect
SKILL.md and directly referenced agents/, references/, scripts/, and assets/. Copy only the complete, sanitized install payload into skills/<name>/; preserve required license and third-party notices.
- Write the eight-field release story from README design, choose
clean-doc or proof-led, then create or update bilingual docs, Changelog, Registry record, Portfolio catalog, and project-native visuals. A proof-led Hero must use a composition derived from the Skill's real mechanism or output; changing only the title and motif inside a shared layout fails review. Never expose a root-level SKILL.md or add human README files inside the Skill payload.
- Choose the version with version-contract.md. Use only the canonical Tag
<skill>/v<version>.
- Freeze a release plan with the narrowest selector. For a governed Skill, its
manifest.json must declare trust_report and output_quality_scorecard as files inside the install payload; both files must exist and be tracked at HEAD. Planning fails before candidate refs are created when either baseline is undeclared, missing, untracked, or escapes the payload. Use --skill <name> for one Skill; reserve --all and optional --exclude for an intentional multi-Skill wave:
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" plan \
--repo <zhijian-skills> --source-checkout <original-checkout> \
--skill <name> --dry-run \
--plan-out /tmp/<name>-release-plan.json
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" verify \
--plan /tmp/<name>-release-plan.json
--skill and --all are mutually exclusive. Repeat --skill only when the user explicitly authorizes a small multi-Skill release. Do not combine --skill with --exclude.
The plan records the live origin/main SHA with git ls-remote. verify queries it again and fails when it changed. When --repo is a temporary clean clone, --source-checkout must identify the original checkout; planning marks that checkout release-in-progress and installs a pre-commit guard so it cannot create new commits from the stale base.
- Validate the Skill, declared tests, full Portfolio, documentation, and repository contracts:
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/portfolio.py" \
validate-skill <zhijian-skills>/skills/<name>
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/portfolio.py" \
audit --repo <zhijian-skills> --strict
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/audit_release_readme.py" \
--repository-root <zhijian-skills> \
<zhijian-skills>/docs/skills/<name>/README.md \
<zhijian-skills>/docs/skills/<name>/README.zh-CN.md --strict
python3 -m unittest discover -s <zhijian-skills>/tests -v
When README assets are generated by the Portfolio, regenerate them and run the asset tests before accepting the diff. Render every changed Hero at 900px and 360px; deterministic checks do not replace visual inspection.
- Verify local
npx skills discovery, then run one fail-fast isolated copy install from the canonical repository:
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/verify_isolated_install.py" \
--repo <zhijian-skills> --skill <name>
The verifier isolates HOME, uses copy mode, and compares SHA-256 manifests byte-for-byte. It returns non-zero immediately when preflight, installation, materialization, missing/extra files, or content comparison fails; do not append a success-printing command that can mask its exit code. Listing success alone is insufficient. Use top-level help only: npx --no-install skills --help. Never run npx skills add <source> --help; skills CLI 1.5.x may perform a real installation because <source> is already a valid add request.
10. Commit only on a short-lived branch created from the recorded remote SHA. Immediately before the remote wave, run verify again, push the branch, and merge it through a PR into protected main; Agents never push directly to main. After merge, read the live remote SHA and record the verified transition:
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" record-step \
--plan /tmp/<name>-release-plan.json --skill <name> \
--step canonical-pushed --remote-sha <merged-origin-main-sha>
This step verifies that remote main contains the planned source and upgrades a temporary-clone source marker to needs-sync. Never call gh repo create or publish to <owner>/<skill-name>.
11. Verify the remote Portfolio listing and isolated install, then create the canonical Tag and launch copy. Clear a source checkout marker only after that checkout is clean and its local HEAD exactly equals the verified remote SHA.
Output contract
Return:
- canonical Skill URL under
zjp1997720/zhijian-skills
- the canonical commit, version, and
<skill>/v<version> Tag
- install command using
npx skills add zjp1997720/zhijian-skills
- Skill validation, Portfolio audit, remote listing, and isolated-install results
- README presentation tier and deliberate visual assets
- the eight-field release story, unique composition choice, and rendered desktop/mobile inspection result
- safety summary and residual assumptions
- at least one X/Twitter launch post, plus a Chinese version for Chinese users
If blocked, return the file paths, reasons, sanitization steps, and safest next action.
Safety rules
Hard stop on:
- API keys, tokens, private keys, cookies, credentials,
.env, or auth config
- personal absolute paths, local vault paths, or machine-only caches
- client data, private URLs, unpublished prompts, or assets without redistribution rights
- escaping symlinks, databases, logs, browser profiles,
.DS_Store, dependency caches, or unexplained binaries
- a dirty or unverified canonical repository that cannot be reconciled safely
- a
release-in-progress or needs-sync checkout marker
- remote
main changing after the release plan is frozen
- a governed
trust_report or output_quality_scorecard that is undeclared, missing, outside the payload, or not tracked at HEAD
Literal credential assignments are blockers. Runtime transformations such as URL-encoding a token variable are not literal secrets and must not be blocked by the generic assignment detector; high-confidence provider key patterns remain blocking.
Never force-push, rewrite published Tags, create a standalone repository, or treat missing evidence as passed.
Packaging rules
- Every Skill lives at
skills/<skill-name>/, including a single-file Skill.
- Keep
SKILL.md lean; put detailed agent guidance in references/ only when needed.
- Preserve
agents/openai.yaml; create it when absent with a $<skill-name> default prompt.
- Include deterministic scripts and licensed agent-facing assets only.
- Put human docs in
docs/skills/<skill-name>/ and README visuals in its assets/readme/ directory.
- Update
registry/skills.json, root README catalogs, and deterministic asset generators together. Every generated proof-led Hero needs a unique, stable data-composition value and a matching project-specific generator branch; Portfolio tests must reject duplicate composition IDs.
Publication verification
npx --no-install skills --help
npx --no-install skills add zjp1997720/zhijian-skills --list
python3 scripts/verify_isolated_install.py \
--repo <zhijian-skills> --skill <skill-name> \
--install-source zjp1997720/zhijian-skills
The verifier uses the Portfolio's pinned skills CLI and returns non-zero for every failed phase. For a cold check where the pinned package is not installed, install dependencies in the canonical checkout before running it; never improvise a shell chain whose final command can hide an earlier failure.
Never use npx skills add <source> --help as a help probe. It may perform a real installation and create .agents/ plus skills-lock.json in the current directory.
Launch copy
After all gates pass, explain the repeated problem, what the Skill automates, the canonical install command, one concrete example request, and any relevant safety boundary. Never link a standalone Skill repository.
1---2name: skill-open-sourcer3description: Audit, package, add, verify, and publish local Agent Skills through the canonical zjp1997720/zhijian-skills portfolio. Use when the user gives a SKILL.md or Skill directory and asks to open-source, publish, release, share, validate, manage versions, make installable with npx skills, prepare documentation, or generate launch copy. Every public Skill must live in the canonical repository's nested skills directory; never create or update a standalone Skill repository.4---56# Skill Open Sourcer78Publish every public Skill from the single canonical repository: `https://github.com/zjp1997720/zhijian-skills`.910## Hard publishing boundary1112- A `SKILL.md` path or Skill directory is an import candidate, not a request to create a repository.13- Put the complete agent payload in `skills/<name>/`, human docs in `docs/skills/<name>/`, and release notes in `docs/changelogs/<name>.md`.14- Register the Skill in `registry/skills.json`. Never add `mirror`, `mirror_tag`, standalone repository, redirect workflow, or mirror-export metadata.15- Publish commits, per-Skill Tags, and install instructions only from `zjp1997720/zhijian-skills`.16- Stop on secrets, private paths, client data, unpublished proprietary material, unclear asset ownership, or an unverified canonical remote.1718Read [Portfolio mode](references/portfolio-mode.md), [Registry contract](references/registry-contract.md), [Release package](references/release-package.md), and [README design](references/readme-design.md) before writing.1920## Workflow21221. Resolve the input to a real Skill directory. Accept a `SKILL.md`, its containing directory, or a symlink from a local Skill root.232. Resolve the canonical checkout from the current repository, `ZHIJIAN_SKILLS_REPO`, or `~/Documents/GitHub/zhijian-skills`. Verify `origin` resolves to `zjp1997720/zhijian-skills`; never guess another destination.243. Follow the canonical repository's Git synchronization rules. Run `git_sync_guard.py check --repo <zhijian-skills>` before changing or publishing from an existing checkout; a `needs-sync` marker is a hard stop. Then run:2526```bash27SKILL_OPEN_SOURCER_DIR="<zhijian-skills>/skills/skill-open-sourcer"28python3 "$SKILL_OPEN_SOURCER_DIR/scripts/check_release_env.py" \29 --repo-dir <zhijian-skills> --check-npx-skills30python3 "$SKILL_OPEN_SOURCER_DIR/scripts/scan_skill_release.py" \31 /path/to/skill-or-SKILL.md32```33344. Inspect `SKILL.md` and directly referenced `agents/`, `references/`, `scripts/`, and `assets/`. Copy only the complete, sanitized install payload into `skills/<name>/`; preserve required license and third-party notices.355. Write the eight-field release story from [README design](references/readme-design.md), choose `clean-doc` or `proof-led`, then create or update bilingual docs, Changelog, Registry record, Portfolio catalog, and project-native visuals. A proof-led Hero must use a composition derived from the Skill's real mechanism or output; changing only the title and motif inside a shared layout fails review. Never expose a root-level `SKILL.md` or add human README files inside the Skill payload.366. Choose the version with [version-contract.md](references/version-contract.md). Use only the canonical Tag `<skill>/v<version>`.377. Freeze a release plan with the narrowest selector. For a governed Skill, its `manifest.json` must declare `trust_report` and `output_quality_scorecard` as files inside the install payload; both files must exist and be tracked at `HEAD`. Planning fails before candidate refs are created when either baseline is undeclared, missing, untracked, or escapes the payload. Use `--skill <name>` for one Skill; reserve `--all` and optional `--exclude` for an intentional multi-Skill wave:3839```bash40python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" plan \41 --repo <zhijian-skills> --source-checkout <original-checkout> \42 --skill <name> --dry-run \43 --plan-out /tmp/<name>-release-plan.json44python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" verify \45 --plan /tmp/<name>-release-plan.json46```4748`--skill` and `--all` are mutually exclusive. Repeat `--skill` only when the user explicitly authorizes a small multi-Skill release. Do not combine `--skill` with `--exclude`.4950The plan records the live `origin/main` SHA with `git ls-remote`. `verify` queries it again and fails when it changed. When `--repo` is a temporary clean clone, `--source-checkout` must identify the original checkout; planning marks that checkout `release-in-progress` and installs a pre-commit guard so it cannot create new commits from the stale base.51528. Validate the Skill, declared tests, full Portfolio, documentation, and repository contracts:5354```bash55python3 "$SKILL_OPEN_SOURCER_DIR/scripts/portfolio.py" \56 validate-skill <zhijian-skills>/skills/<name>57python3 "$SKILL_OPEN_SOURCER_DIR/scripts/portfolio.py" \58 audit --repo <zhijian-skills> --strict59python3 "$SKILL_OPEN_SOURCER_DIR/scripts/audit_release_readme.py" \60 --repository-root <zhijian-skills> \61 <zhijian-skills>/docs/skills/<name>/README.md \62 <zhijian-skills>/docs/skills/<name>/README.zh-CN.md --strict63python3 -m unittest discover -s <zhijian-skills>/tests -v64```6566When README assets are generated by the Portfolio, regenerate them and run the asset tests before accepting the diff. Render every changed Hero at `900px` and `360px`; deterministic checks do not replace visual inspection.67689. Verify local `npx skills` discovery, then run one fail-fast isolated copy install from the canonical repository:6970```bash71python3 "$SKILL_OPEN_SOURCER_DIR/scripts/verify_isolated_install.py" \72 --repo <zhijian-skills> --skill <name>73```7475The verifier isolates HOME, uses copy mode, and compares SHA-256 manifests byte-for-byte. It returns non-zero immediately when preflight, installation, materialization, missing/extra files, or content comparison fails; do not append a success-printing command that can mask its exit code. Listing success alone is insufficient. Use top-level help only: `npx --no-install skills --help`. Never run `npx skills add <source> --help`; `skills` CLI 1.5.x may perform a real installation because `<source>` is already a valid add request.7610. Commit only on a short-lived branch created from the recorded remote SHA. Immediately before the remote wave, run `verify` again, push the branch, and merge it through a PR into protected `main`; Agents never push directly to `main`. After merge, read the live remote SHA and record the verified transition:7778```bash79python3 "$SKILL_OPEN_SOURCER_DIR/scripts/release_portfolio.py" record-step \80 --plan /tmp/<name>-release-plan.json --skill <name> \81 --step canonical-pushed --remote-sha <merged-origin-main-sha>82```8384This step verifies that remote `main` contains the planned source and upgrades a temporary-clone source marker to `needs-sync`. Never call `gh repo create` or publish to `<owner>/<skill-name>`.8511. Verify the remote Portfolio listing and isolated install, then create the canonical Tag and launch copy. Clear a source checkout marker only after that checkout is clean and its local `HEAD` exactly equals the verified remote SHA.8687## Output contract8889Return:9091- canonical Skill URL under `zjp1997720/zhijian-skills`92- the canonical commit, version, and `<skill>/v<version>` Tag93- install command using `npx skills add zjp1997720/zhijian-skills`94- Skill validation, Portfolio audit, remote listing, and isolated-install results95- README presentation tier and deliberate visual assets96- the eight-field release story, unique composition choice, and rendered desktop/mobile inspection result97- safety summary and residual assumptions98- at least one X/Twitter launch post, plus a Chinese version for Chinese users99100If blocked, return the file paths, reasons, sanitization steps, and safest next action.101102## Safety rules103104Hard stop on:105106- API keys, tokens, private keys, cookies, credentials, `.env`, or auth config107- personal absolute paths, local vault paths, or machine-only caches108- client data, private URLs, unpublished prompts, or assets without redistribution rights109- escaping symlinks, databases, logs, browser profiles, `.DS_Store`, dependency caches, or unexplained binaries110- a dirty or unverified canonical repository that cannot be reconciled safely111- a `release-in-progress` or `needs-sync` checkout marker112- remote `main` changing after the release plan is frozen113- a governed `trust_report` or `output_quality_scorecard` that is undeclared, missing, outside the payload, or not tracked at `HEAD`114115Literal credential assignments are blockers. Runtime transformations such as URL-encoding a token variable are not literal secrets and must not be blocked by the generic assignment detector; high-confidence provider key patterns remain blocking.116117Never force-push, rewrite published Tags, create a standalone repository, or treat missing evidence as passed.118119## Packaging rules120121- Every Skill lives at `skills/<skill-name>/`, including a single-file Skill.122- Keep `SKILL.md` lean; put detailed agent guidance in `references/` only when needed.123- Preserve `agents/openai.yaml`; create it when absent with a `$<skill-name>` default prompt.124- Include deterministic scripts and licensed agent-facing assets only.125- Put human docs in `docs/skills/<skill-name>/` and README visuals in its `assets/readme/` directory.126- Update `registry/skills.json`, root README catalogs, and deterministic asset generators together. Every generated proof-led Hero needs a unique, stable `data-composition` value and a matching project-specific generator branch; Portfolio tests must reject duplicate composition IDs.127128## Publication verification129130```bash131npx --no-install skills --help132npx --no-install skills add zjp1997720/zhijian-skills --list133python3 scripts/verify_isolated_install.py \134 --repo <zhijian-skills> --skill <skill-name> \135 --install-source zjp1997720/zhijian-skills136```137138The verifier uses the Portfolio's pinned `skills` CLI and returns non-zero for every failed phase. For a cold check where the pinned package is not installed, install dependencies in the canonical checkout before running it; never improvise a shell chain whose final command can hide an earlier failure.139Never use `npx skills add <source> --help` as a help probe. It may perform a real installation and create `.agents/` plus `skills-lock.json` in the current directory.140141## Launch copy142143After all gates pass, explain the repeated problem, what the Skill automates, the canonical install command, one concrete example request, and any relevant safety boundary. Never link a standalone Skill repository.