diff --git a/.agents/scripts/test_skill_release.py b/.agents/scripts/test_skill_release.py index 428b899..d46ea5b 100644 --- a/.agents/scripts/test_skill_release.py +++ b/.agents/scripts/test_skill_release.py @@ -65,7 +65,7 @@ def test_version_extraction_step_executes_and_writes_outputs(self) -> None: else: os.environ["GITHUB_OUTPUT"] = previous_output - self.assertEqual(output_path.read_text(encoding="utf-8"), "skill_version=0.2.0\ntag=v0.2.0\n") + self.assertEqual(output_path.read_text(encoding="utf-8"), "skill_version=0.2.1\ntag=v0.2.1\n") def test_version_extraction_step_rejects_invalid_numeric_prerelease_identifiers(self) -> None: workflow = WORKFLOW.read_text(encoding="utf-8") @@ -85,7 +85,7 @@ def test_version_extraction_step_rejects_invalid_numeric_prerelease_identifiers( skill_path = root / "skills/api-to-typemcp/SKILL.md" skill_path.parent.mkdir(parents=True) skill_path.write_text( - original.replace("version: 0.2.0", f"version: {invalid_version}"), + original.replace("version: 0.2.1", f"version: {invalid_version}"), encoding="utf-8", ) previous_cwd = Path.cwd() @@ -243,9 +243,9 @@ def test_existing_unpublished_skill_is_recovered_before_version_reconciliation(s [ (200, {"data": [{"slug": "integration"}]}), (200, {"slug": "api-to-typemcp", "status": "DRAFT"}), - (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.0"}), - (200, [{"version": "0.2.0"}]), - (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.0"}), + (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.1"}), + (200, [{"version": "0.2.1"}]), + (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.1"}), ] ) calls: list[tuple[str, str]] = [] @@ -258,7 +258,7 @@ def mocked_request( environment = { "SKILLS_HUB_AI_API_KEY": "test-key", - "SKILL_VERSION": "0.2.0", + "SKILL_VERSION": "0.2.1", "GITHUB_SHA": "test-sha", "GITHUB_REPOSITORY": "Theorvane/type-mcp-api-agent-skill", } @@ -280,8 +280,8 @@ def test_version_conflict_is_reconciled_without_a_second_mutation(self) -> None: (200, {"slug": "api-to-typemcp", "status": "PUBLISHED"}), (200, []), (409, {"error": "version already exists"}), - (200, [{"version": "0.2.0"}]), - (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.0"}), + (200, [{"version": "0.2.1"}]), + (200, {"slug": "api-to-typemcp", "status": "PUBLISHED", "latestVersion": "0.2.1"}), ] ) calls: list[tuple[str, str]] = [] @@ -294,7 +294,7 @@ def mocked_request( environment = { "SKILLS_HUB_AI_API_KEY": "test-key", - "SKILL_VERSION": "0.2.0", + "SKILL_VERSION": "0.2.1", "GITHUB_SHA": "test-sha", "GITHUB_REPOSITORY": "Theorvane/type-mcp-api-agent-skill", } diff --git a/.agents/task-briefs/67-release-api-to-typemcp-v0-2-1.md b/.agents/task-briefs/67-release-api-to-typemcp-v0-2-1.md new file mode 100644 index 0000000..7eb98b9 --- /dev/null +++ b/.agents/task-briefs/67-release-api-to-typemcp-v0-2-1.md @@ -0,0 +1,60 @@ +# Task brief: 67 — publish api-to-typemcp v0.2.1 + +**Status:** review +**Issue:** https://github.com/Theorvane/type-mcp-api-agent-skill/issues/67 +**Branch:** `chore/67-release-api-to-typemcp-v0-2-1` +**Owner:** Hermes Agent + +## Goal + +Release the reviewed security-hardened `api-to-typemcp` skill as public version 0.2.1 through the protected `dev` → `main` promotion and the main-push release workflow. + +## Source references + +- Release contract: `docs/guides/skill-release.md` +- Release checklist: `.agents/checklists/release-readiness.md` +- Security changes: #65 +- ClawHub public-confirmation gate: #61 + +## Scope + +### Included + +- Bump the frontmatter release version from 0.2.0 to 0.2.1. +- Update release-contract expectations and public README release link. +- Verify the bundled artifact and a generated project before promotion. +- Promote and independently verify the public GitHub, ClawHub, and skills-hub.ai releases. + +### Excluded + +- New engine behavior or dependency changes beyond the reviewed `dev` content. +- Manual registry mutation or immutable-version retries. + +## Safety and contract notes + +- Source input: the reviewed `origin/dev` commit `a2225f5c8203c6d468d3419bf99c9a2c7a7d3ade`. +- Secrets: GitHub Actions secrets only; never read, print, or commit credentials. +- Side effects: registry publication only follows a reviewed `dev` → `main` merge and succeeds only for published registry state. +- Compatibility: generated projects retain the public `@theorvane/type-mcp@0.2.0` runtime contract. + +## Test-first evidence + +| Stage | Command | Expected/observed result | +| --- | --- | --- | +| Red | `python3 .agents/scripts/test_skill_release.py` | Expected to fail after changing the release-contract expectation to 0.2.1 while SKILL.md is 0.2.0. | +| Green | `python3 .agents/scripts/test_skill_release.py` | Passed: 15 tests. | +| Regression | full repository validation and generated-project verification | Passed: 98 engine tests; generated-project `npm ci`, build, Vitest, and audit (0 vulnerabilities). | + +## Verification + +- [x] Unit/integration tests +- [x] Generator or generated-project E2E test +- [x] Build/package validation +- [x] `git diff --check` +- [x] Documentation updated +- [ ] Independent specification review recorded +- [ ] Independent code-quality review recorded + +## Review notes + +- Pending exact-head independent review after PR creation. diff --git a/README.md b/README.md index c34ef2f..e62a690 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Tasks 1–7 of embedded-engine delivery are implemented on `dev`: structured Ope - [ClawHub (`@sjungwon03/api-to-typemcp`)](https://clawhub.ai/sjungwon03/api-to-typemcp) - [skills-hub.ai (`api-to-typemcp`)](https://skills-hub.ai/skills/api-to-typemcp) -- [GitHub Release v0.2.0](https://github.com/Theorvane/type-mcp-api-agent-skill/releases/tag/v0.2.0) +- [GitHub Release v0.2.1](https://github.com/Theorvane/type-mcp-api-agent-skill/releases/tag/v0.2.1) ## Layout diff --git a/skills/api-to-typemcp/SKILL.md b/skills/api-to-typemcp/SKILL.md index b668888..e5eff92 100644 --- a/skills/api-to-typemcp/SKILL.md +++ b/skills/api-to-typemcp/SKILL.md @@ -1,7 +1,7 @@ --- name: api-to-typemcp description: Use when turning supplied API sources into a safe TypeMCP project. -version: 0.2.0 +version: 0.2.1 category: integration license: MIT metadata: