[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CV2B46QMSS5HNCHPX2XY5Z":3,"skill-same:01M6CV2B46QMSS5HNCHPX2XY5Z":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6CV2B46QMSS5HNCHPX2XY5Z","release",null,"Cut, build, sign, tag, or publish a Crucible Lens release. Use only when explicitly asked to release, ship, publish, tag, bump the version, or produce signed release artifacts. Follow the ordered safeguards without improvising.","roncofaber\u002Fcrucible-lens","roncofaber","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48035351?v=4","01M6CV1Y8G75MY5ZBY47GZXYGD","Fabrice Roncoroni","01M6CV1YCNR0JBT13J84NGB3QC",1,"BSD-3-Clause","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Frelease\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27],"artifacts","produce","publish","ship","use","version","only","bump","build","2026-11-10 10:12:30",false,"---\nname: release\ndescription: Cut, build, sign, tag, or publish a Crucible Lens release. Use only when explicitly asked to release, ship, publish, tag, bump the version, or produce signed release artifacts. Follow the ordered safeguards without improvising.\n---\n\n# Release Crucible Lens\n\nFollow every step in order. Stop if version, changelog, build, generated configuration, or signature verification fails.\n\n## 1. Version and changelog\n\nUpdate both values in `gradle.properties`, the single source of truth:\n\n```properties\napp.versionName=X.Y.Z\napp.versionCode=N\n```\n\nReview and promote the current changelog content:\n\n1. Read the complete `Unreleased` section and consolidate entries that describe the same user-visible workflow or outcome. Remove implementation-only entries and avoid repeating an outcome across `Added`, `Changed`, and `Fixed`.\n2. Preserve explicit entries for security, privacy, compatibility, migration, access-control, and breaking changes. Aim for roughly 5 to 15 meaningful bullets unless the release genuinely contains more distinct user-facing changes.\n3. Rename `## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`.\n4. Add a one- or two-sentence summary paragraph before its `###` subsections. CI requires this paragraph for release notes.\n5. Add a new empty `## [Unreleased]` section above the release.\n\nDo not reconstruct missing entries from git history during release. User-visible entries belong in the changelog when their changes land.\n\n## 2. Build and verify artifacts\n\nRun:\n\n```bash\n.\u002Fscripts\u002Frelease.sh\n```\n\nThe script performs Android compilation, host tests, iOS Kotlin compilation, debug APK construction, release AAB and APK construction, generated `AppBuildConfig` verification, signature verification, and artifact copying.\n\nKeep debug and release builds in separate Gradle invocations. `generateAppBuildConfig` derives `DEBUG` from requested task names while the shared Android compilation is not variant-split, so a combined invocation can put debug configuration into release artifacts.\n\nRelease signing comes from `KEYSTORE_PATH`, `KEYSTORE_PASSWORD`, `KEY_ALIAS`, and `KEY_PASSWORD`, with non-secret path and alias fallbacks in gitignored `local.properties`. The script prompts for missing passwords. Never commit a keystore or credential.\n\nThe script does not edit versions or the changelog, commit, tag, or push.\n\n## 3. Inspect verification\n\nConfirm the script reports `DEBUG = false` for the release configuration and verifies both the APK signature and the AAB signing entry. A successful Gradle build alone is insufficient because an absent signing configuration can produce an unsigned artifact.\n\n## 4. Publish\n\nCommit the version and changelog, push the commit, create the version tag printed by the script, then push the tag. The tag-triggered workflow creates a draft GitHub release and uses the version summary paragraph as its notes.\n\n## Ad hoc debug build\n\nAn ad hoc test build is not a release:\n\n```bash\n.\u002Fgradlew :androidApp:assembleDebug\n```\n\nCopy it under the fixed development name `crucible-lens-dev-debug.apk`. Reserve versioned artifact names for tagged releases.\n","# Release Crucible Lens\n\nFollow every step in order. Stop if version, changelog, build, generated configuration, or signature verification fails.\n\n## 1. Version and changelog\n\nUpdate both values in `gradle.properties`, the single source of truth:\n\n```properties\napp.versionName=X.Y.Z\napp.versionCode=N\n```\n\nReview and promote the current changelog content:\n\n1. Read the complete `Unreleased` section and consolidate entries that describe the same user-visible workflow or outcome. Remove implementation-only entries and avoid repeating an outcome across `Added`, `Changed`, and `Fixed`.\n2. Preserve explicit entries for security, privacy, compatibility, migration, access-control, and breaking changes. Aim for roughly 5 to 15 meaningful bullets unless the release genuinely contains more distinct user-facing changes.\n3. Rename `## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`.\n4. Add a one- or two-sentence summary paragraph before its `###` subsections. CI requires this paragraph for release notes.\n5. Add a new empty `## [Unreleased]` section above the release.\n\nDo not reconstruct missing entries from git history during release. User-visible entries belong in the changelog when their changes land.\n\n## 2. Build and verify artifacts\n\nRun:\n\n```bash\n.\u002Fscripts\u002Frelease.sh\n```\n\nThe script performs Android compilation, host tests, iOS Kotlin compilation, debug APK construction, release AAB and APK construction, generated `AppBuildConfig` verification, signature verification, and artifact copying.\n\nKeep debug and release builds in separate Gradle invocations. `generateAppBuildConfig` derives `DEBUG` from requested task names while the shared Android compilation is not variant-split, so a combined invocation can put debug configuration into release artifacts.\n\nRelease signing comes from `KEYSTORE_PATH`, `KEYSTORE_PASSWORD`, `KEY_ALIAS`, and `KEY_PASSWORD`, with non-secret path and alias fallbacks in gitignored `local.properties`. The script prompts for missing passwords. Never commit a keystore or credential.\n\nThe script does not edit versions or the changelog, commit, tag, or push.\n\n## 3. Inspect verification\n\nConfirm the script reports `DEBUG = false` for the release configuration and verifies both the APK signature and the AAB signing entry. A successful Gradle build alone is insufficient because an absent signing configuration can produce an unsigned artifact.\n\n## 4. Publish\n\nCommit the version and changelog, push the commit, create the version tag printed by the script, then push the tag. The tag-triggered workflow creates a draft GitHub release and uses the version summary paragraph as its notes.\n\n## Ad hoc debug build\n\nAn ad hoc test build is not a release:\n\n```bash\n.\u002Fgradlew :androidApp:assembleDebug\n```\n\nCopy it under the fixed development name `crucible-lens-dev-debug.apk`. Reserve versioned artifact names for tagged releases.\n",{"name":5,"description":7},"main","9ceaf87c9c62e4b7eb416b5f5516465f8c08443d","agent-skills\u002Frelease",0,"https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens","https:\u002F\u002Fgithub.com\u002Froncofaber","🐍 Python is my rock, and I am ready to roll! 🪨 ","2026-09-17 22:32:31",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add roncofaber\u002Fcrucible-lens --skill release",{"tool":47,"command":48},"bunx","bunx skills add roncofaber\u002Fcrucible-lens --skill release",{"tool":50,"command":51},"pnpm","pnpm dlx skills add roncofaber\u002Fcrucible-lens --skill release","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Frelease\u002FSKILL.md",true,[55],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"agents\u002Fopenai.yaml","REFERENCE","参考文档",43,"https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Frelease\u002Fagents\u002Fopenai.yaml",[62,82,98,130,136],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":28},"01M6CV28FNZJBJM7SAKY4ZWQ8T","audit-docs","Audit AGENTS.md, README.md, project skills, and dev documentation against the repository, then repair factual drift and unnecessary duplication. Use only when explicitly asked to audit, refresh, migrate, or verify project documentation.","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Faudit-docs\u002FSKILL.md",[],[69,70,71,72,73,74,75,76,77,78,23,25,79,80,81],"audit","docs","audit docs","documentation","dev","repository","verify","migrate","README","refresh","duplication","drift","repair",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":28},"01M6CV268BH7084XE3ASMXFC37","add-screen","Add a Compose Multiplatform feature screen with its route, encoded arguments, NavGraph entry, ViewModel, Koin registration, shared UI conventions, and validation. Use when adding a screen or changing navigation and screen-level dependency wiring.","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Fadd-screen\u002FSKILL.md",[],[89,90,91,92,93,94,95,96,23,97],"add screen","route","navigation","registration","conventions","validation","compose","ui","dependency",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":114,"publishedAt":28},"01M6CV23MY7X7GXTK51Z4J16R4","add-api-endpoint","Add or change a Crucible API endpoint, request or response model, pagination path, repository cache, or scientific metadata write. Use when touching data\u002Fapi, data\u002Frepository, API serialization, or create and edit network flows.","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002Fagent-skills\u002Fadd-api-endpoint\u002FSKILL.md",[104,109],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[115,116,117,118,119,120,121,122,123,124,74,125,126,127,128,23,129],"add api endpoint","api","endpoint","api endpoint","network","change","create","metadata","cache","serialization","data","model","write","edit","pagination",{"skillNo":131,"name":5,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":28},"01M6CV224Y9A83VEVXPMW6AEHP","Cut, build, sign, tag, or publish a Crucible Lens release when explicitly requested.","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease\u002FSKILL.md",[],[5,21,27],{"skillNo":137,"name":64,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":28},"01M6CV20VEDHVRPM7JPV1G5WBB","Audit and refresh project documentation when explicitly requested.","https:\u002F\u002Fgithub.com\u002Froncofaber\u002Fcrucible-lens\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Faudit-docs\u002FSKILL.md",[],[70,71,69,72,78]]