mirror of
https://github.com/Fission-AI/OpenSpec.git
synced 2026-10-20 06:19:21 +08:00
* feat(skills): publish workflow skills to skills.sh Commit the 12 OpenSpec workflow skills as static skills/<name>/SKILL.md so `npx skills add Fission-AI/OpenSpec` can install them (skills.sh reads static files from the repo; OpenSpec otherwise only generates skills at init time). Files are generated from the existing templates via `pnpm generate:skills`, not hand-copied, and skillssh-parity.test.ts fails CI if a template changes without regenerating. The volatile generatedBy frontmatter line is stripped so the committed copies stay byte-stable across releases. Closes #1258 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(skills): force LF on committed skills/ so Windows CI parity holds The skills.sh distribution files are generated LF-only and compared byte-for-byte by skillssh-parity.test.ts. Windows autocrlf checked them out as CRLF, failing the parity assertion. A scoped .gitattributes pins them to LF on checkout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(skills): reject symlinks and assert the exact committed skill set Review feedback (alfred): the parity test only visited expected templates, so an extra or renamed skills/ directory shipped with green CI, and the generator would write through a pre-existing symlinked skill directory to anywhere on disk. - generator: refuse to run if skills/ contains any symlink (checked before any deletion, so a bad tree is left intact), validate dirNames against a path-segment allowlist, and lstat the target before writing. - parity test: assert skills/ holds exactly README.md plus one real directory per template, each containing a single real SKILL.md. - focused tests cover symlink refusal (no partial deletion), traversal names, and stale-directory cleanup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(templates): abort archive on Cancel, honest summary, fence languages CodeRabbit review on #1357, fixed at the template source and regenerated: - archive-change: choosing "Cancel" at the sync prompt now stops the flow instead of archiving anyway (skill + command templates). - archive-change skill: the success output no longer hardcodes "All artifacts complete. All tasks complete." when archiving incomplete work. - archive/bulk-archive/sync-specs/verify-change: language identifiers on previously plain code fences (MD040), skill and command twins alike. Golden hashes in skill-templates-parity.test.ts recomputed from dist/; skills/ regenerated via pnpm generate:skills. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
87 lines
2.1 KiB
JSON
87 lines
2.1 KiB
JSON
{
|
|
"name": "@fission-ai/openspec",
|
|
"version": "1.6.0",
|
|
"description": "AI-native system for spec-driven development",
|
|
"keywords": [
|
|
"openspec",
|
|
"specs",
|
|
"cli",
|
|
"ai",
|
|
"development"
|
|
],
|
|
"homepage": "https://github.com/Fission-AI/OpenSpec",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/Fission-AI/OpenSpec"
|
|
},
|
|
"license": "MIT",
|
|
"author": "OpenSpec Contributors",
|
|
"type": "module",
|
|
"packageManager": "pnpm@9.15.9",
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.js"
|
|
}
|
|
},
|
|
"bin": {
|
|
"openspec": "./bin/openspec.js"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"bin",
|
|
"schemas",
|
|
"scripts/postinstall.js",
|
|
"!dist/**/*.test.js",
|
|
"!dist/**/__tests__",
|
|
"!dist/**/*.map"
|
|
],
|
|
"scripts": {
|
|
"lint": "eslint src/",
|
|
"build": "node build.js",
|
|
"generate:skills": "node scripts/generate-skillssh.mjs",
|
|
"dev": "tsc --watch",
|
|
"dev:cli": "pnpm build && node bin/openspec.js",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest --coverage",
|
|
"test:postinstall": "node scripts/postinstall.js",
|
|
"prepare": "pnpm run build",
|
|
"prepublishOnly": "pnpm run build",
|
|
"postinstall": "node scripts/postinstall.js",
|
|
"check:pack-version": "node scripts/pack-version-check.mjs",
|
|
"release": "pnpm run release:ci",
|
|
"release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
|
|
"changeset": "changeset"
|
|
},
|
|
"engines": {
|
|
"node": ">=20.19.0"
|
|
},
|
|
"devDependencies": {
|
|
"@changesets/changelog-github": "^0.5.2",
|
|
"@changesets/cli": "^2.27.7",
|
|
"@types/node": "^24.2.0",
|
|
"@vitest/ui": "^3.2.6",
|
|
"eslint": "^9.39.2",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.62.0",
|
|
"vitest": "^3.2.6"
|
|
},
|
|
"dependencies": {
|
|
"@inquirer/core": "^10.3.2",
|
|
"@inquirer/prompts": "^7.10.1",
|
|
"chalk": "^5.5.0",
|
|
"commander": "^14.0.0",
|
|
"cross-spawn": "7.0.6",
|
|
"fast-glob": "^3.3.3",
|
|
"ora": "^8.2.0",
|
|
"posthog-node": "^5.20.0",
|
|
"yaml": "^2.8.2",
|
|
"zod": "^4.0.17"
|
|
}
|
|
}
|