showdar-skills 0.2.0
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.
- package/LICENSE +9 -0
- package/README.md +322 -0
- package/bin/showdar.js +118 -0
- package/bundles/bugfix.yaml +4 -0
- package/bundles/design.yaml +4 -0
- package/bundles/feature.yaml +4 -0
- package/bundles/release.yaml +4 -0
- package/bundles/upgrade.yaml +4 -0
- package/commands/opencode/showdar/build.md +6 -0
- package/commands/opencode/showdar/debug.md +6 -0
- package/commands/opencode/showdar/design.md +6 -0
- package/commands/opencode/showdar/git.md +6 -0
- package/commands/opencode/showdar/ops.md +7 -0
- package/commands/opencode/showdar/plan.md +6 -0
- package/commands/opencode/showdar/quality.md +7 -0
- package/commands/opencode/showdar/recover.md +6 -0
- package/commands/opencode/showdar/requirements.md +7 -0
- package/commands/opencode/showdar/review.md +6 -0
- package/commands/opencode/showdar/security.md +7 -0
- package/commands/opencode/showdar/ship.md +6 -0
- package/commands/opencode/showdar/skill.md +6 -0
- package/commands/opencode/showdar/test.md +6 -0
- package/commands/opencode/showdar/understand.md +6 -0
- package/commands/opencode/showdar/upgrade.md +6 -0
- package/engine/csv.mjs +45 -0
- package/engine/detect-stack.mjs +48 -0
- package/engine/rank.mjs +40 -0
- package/engine/search.mjs +20 -0
- package/package.json +28 -0
- package/profiles/backend.json +1 -0
- package/profiles/developer.json +1 -0
- package/profiles/full.json +1 -0
- package/profiles/minimal.json +1 -0
- package/profiles/product.json +1 -0
- package/profiles/qa.json +1 -0
- package/router/conflicts.yaml +50 -0
- package/router/skill-map.yaml +54 -0
- package/router/triggers.yaml +30 -0
- package/skills/showdar-build/SKILL.md +154 -0
- package/skills/showdar-build/data/change-smells.csv +24 -0
- package/skills/showdar-build/data/index.json +14 -0
- package/skills/showdar-build/examples/change-surface.md +18 -0
- package/skills/showdar-build/references/architecture-boundaries.md +3 -0
- package/skills/showdar-build/references/error-handling.md +3 -0
- package/skills/showdar-build/references/feature-flags.md +3 -0
- package/skills/showdar-build/references/minimal-change.md +3 -0
- package/skills/showdar-build/scripts/change-surface.mjs +5 -0
- package/skills/showdar-build/stacks/dart.md +3 -0
- package/skills/showdar-build/stacks/flutter.md +3 -0
- package/skills/showdar-build/stacks/kotlin.md +3 -0
- package/skills/showdar-build/stacks/nextjs.md +3 -0
- package/skills/showdar-build/stacks/node-fastify.md +3 -0
- package/skills/showdar-build/stacks/node-nestjs.md +3 -0
- package/skills/showdar-build/stacks/react-native.md +3 -0
- package/skills/showdar-build/stacks/react.md +3 -0
- package/skills/showdar-build/stacks/rust-tauri.md +3 -0
- package/skills/showdar-build/stacks/swift.md +3 -0
- package/skills/showdar-build/stacks/typescript.md +3 -0
- package/skills/showdar-debug/SKILL.md +179 -0
- package/skills/showdar-debug/data/failure-patterns.csv +34 -0
- package/skills/showdar-debug/data/index.json +14 -0
- package/skills/showdar-debug/examples/evidence-log.md +19 -0
- package/skills/showdar-debug/references/async-races.md +3 -0
- package/skills/showdar-debug/references/build-failures.md +3 -0
- package/skills/showdar-debug/references/hypothesis-driven-debugging.md +3 -0
- package/skills/showdar-debug/references/memory.md +3 -0
- package/skills/showdar-debug/references/networking.md +3 -0
- package/skills/showdar-debug/references/performance.md +3 -0
- package/skills/showdar-debug/scripts/collect-context.mjs +8 -0
- package/skills/showdar-debug/scripts/lib/detect-stack.mjs +48 -0
- package/skills/showdar-debug/stacks/android.md +21 -0
- package/skills/showdar-debug/stacks/docker.md +21 -0
- package/skills/showdar-debug/stacks/flutter.md +21 -0
- package/skills/showdar-debug/stacks/ios.md +21 -0
- package/skills/showdar-debug/stacks/nextjs.md +21 -0
- package/skills/showdar-debug/stacks/node.md +21 -0
- package/skills/showdar-debug/stacks/react-native.md +21 -0
- package/skills/showdar-debug/stacks/react.md +21 -0
- package/skills/showdar-debug/stacks/tauri.md +21 -0
- package/skills/showdar-design/SKILL.md +179 -0
- package/skills/showdar-design/data/accessibility.csv +16 -0
- package/skills/showdar-design/data/colors.csv +13 -0
- package/skills/showdar-design/data/components.csv +20 -0
- package/skills/showdar-design/data/index.json +25 -0
- package/skills/showdar-design/data/motion.csv +13 -0
- package/skills/showdar-design/data/products.csv +19 -0
- package/skills/showdar-design/data/stacks/compose.csv +9 -0
- package/skills/showdar-design/data/stacks/flutter.csv +9 -0
- package/skills/showdar-design/data/stacks/html-tailwind.csv +9 -0
- package/skills/showdar-design/data/stacks/nextjs.csv +9 -0
- package/skills/showdar-design/data/stacks/nuxt.csv +9 -0
- package/skills/showdar-design/data/stacks/react-native.csv +9 -0
- package/skills/showdar-design/data/stacks/react.csv +9 -0
- package/skills/showdar-design/data/stacks/svelte.csv +9 -0
- package/skills/showdar-design/data/stacks/swiftui.csv +9 -0
- package/skills/showdar-design/data/stacks/tauri.csv +9 -0
- package/skills/showdar-design/data/stacks/vue.csv +9 -0
- package/skills/showdar-design/data/styles.csv +13 -0
- package/skills/showdar-design/data/typography.csv +13 -0
- package/skills/showdar-design/data/ui-patterns.csv +19 -0
- package/skills/showdar-design/examples/design-brief.md +19 -0
- package/skills/showdar-design/references/accessibility.md +5 -0
- package/skills/showdar-design/references/anti-ai-ui.md +5 -0
- package/skills/showdar-design/references/architecture.md +12 -0
- package/skills/showdar-design/references/interaction.md +5 -0
- package/skills/showdar-design/references/layout.md +5 -0
- package/skills/showdar-design/references/release-readiness.md +12 -0
- package/skills/showdar-design/references/responsive.md +5 -0
- package/skills/showdar-design/references/security.md +12 -0
- package/skills/showdar-design/references/visual-hierarchy.md +7 -0
- package/skills/showdar-design/scripts/lib/csv.mjs +40 -0
- package/skills/showdar-design/scripts/lib/rank.mjs +35 -0
- package/skills/showdar-design/scripts/lib/search.mjs +20 -0
- package/skills/showdar-design/scripts/search.mjs +38 -0
- package/skills/showdar-design/stacks/flutter.md +13 -0
- package/skills/showdar-design/stacks/html-tailwind.md +12 -0
- package/skills/showdar-design/stacks/jetpack-compose.md +13 -0
- package/skills/showdar-design/stacks/nextjs.md +12 -0
- package/skills/showdar-design/stacks/nuxt.md +11 -0
- package/skills/showdar-design/stacks/react-native.md +13 -0
- package/skills/showdar-design/stacks/react.md +12 -0
- package/skills/showdar-design/stacks/svelte.md +11 -0
- package/skills/showdar-design/stacks/swiftui.md +12 -0
- package/skills/showdar-design/stacks/tauri.md +12 -0
- package/skills/showdar-design/stacks/vue.md +12 -0
- package/skills/showdar-git/SKILL.md +291 -0
- package/skills/showdar-git/data/git-workflows.csv +7 -0
- package/skills/showdar-git/data/index.json +14 -0
- package/skills/showdar-git/examples/commit-task-only.md +15 -0
- package/skills/showdar-git/examples/conflict-stop.md +7 -0
- package/skills/showdar-git/examples/explicit-push.md +7 -0
- package/skills/showdar-git/examples/feature-merge-no-push.md +13 -0
- package/skills/showdar-git/references/operation-safety.md +34 -0
- package/skills/showdar-git/scripts/inspect-git-state.mjs +53 -0
- package/skills/showdar-ops/SKILL.md +160 -0
- package/skills/showdar-ops/data/index.json +14 -0
- package/skills/showdar-ops/data/ops-patterns.csv +12 -0
- package/skills/showdar-ops/examples/explicit-deployment.md +5 -0
- package/skills/showdar-ops/examples/fix-existing-ci.md +5 -0
- package/skills/showdar-ops/examples/inspect-ci-readonly.md +7 -0
- package/skills/showdar-ops/examples/rollback-plan.md +5 -0
- package/skills/showdar-ops/examples/staging-plan.md +5 -0
- package/skills/showdar-ops/references/ci-cd.md +5 -0
- package/skills/showdar-ops/references/containers.md +5 -0
- package/skills/showdar-ops/references/deployment.md +5 -0
- package/skills/showdar-ops/references/desktop-release.md +3 -0
- package/skills/showdar-ops/references/environments.md +5 -0
- package/skills/showdar-ops/references/mobile-release.md +3 -0
- package/skills/showdar-ops/references/observability.md +5 -0
- package/skills/showdar-ops/references/rollback.md +5 -0
- package/skills/showdar-ops/scripts/inspect-ops-state.mjs +54 -0
- package/skills/showdar-plan/SKILL.md +159 -0
- package/skills/showdar-plan/data/index.json +14 -0
- package/skills/showdar-plan/data/planning-checklists.csv +25 -0
- package/skills/showdar-plan/examples/feature-plan.md +19 -0
- package/skills/showdar-plan/references/architecture.md +5 -0
- package/skills/showdar-plan/references/requirements.md +5 -0
- package/skills/showdar-plan/references/risk-analysis.md +5 -0
- package/skills/showdar-plan/references/scope.md +5 -0
- package/skills/showdar-plan/references/task-decomposition.md +5 -0
- package/skills/showdar-plan/scripts/collect-planning-context.mjs +9 -0
- package/skills/showdar-plan/scripts/lib/detect-stack.mjs +48 -0
- package/skills/showdar-plan/stacks/backend.md +3 -0
- package/skills/showdar-plan/stacks/mobile.md +3 -0
- package/skills/showdar-plan/stacks/web.md +3 -0
- package/skills/showdar-quality/SKILL.md +166 -0
- package/skills/showdar-quality/data/index.json +14 -0
- package/skills/showdar-quality/data/quality-patterns.csv +11 -0
- package/skills/showdar-quality/references/qa-guide.md +20 -0
- package/skills/showdar-recover/SKILL.md +164 -0
- package/skills/showdar-recover/data/index.json +14 -0
- package/skills/showdar-recover/data/recovery-signals.csv +23 -0
- package/skills/showdar-recover/examples/recovery-report.md +18 -0
- package/skills/showdar-recover/references/failed-runs.md +3 -0
- package/skills/showdar-recover/references/interrupted-session.md +3 -0
- package/skills/showdar-recover/references/merge-conflicts.md +3 -0
- package/skills/showdar-recover/references/partial-implementation.md +3 -0
- package/skills/showdar-recover/scripts/inspect-state.mjs +5 -0
- package/skills/showdar-requirements/SKILL.md +172 -0
- package/skills/showdar-requirements/data/index.json +14 -0
- package/skills/showdar-requirements/data/requirements-patterns.csv +11 -0
- package/skills/showdar-requirements/references/analysis-guide.md +30 -0
- package/skills/showdar-review/SKILL.md +155 -0
- package/skills/showdar-review/data/index.json +14 -0
- package/skills/showdar-review/data/review-patterns.csv +27 -0
- package/skills/showdar-review/examples/finding.md +16 -0
- package/skills/showdar-review/references/architecture.md +3 -0
- package/skills/showdar-review/references/correctness.md +3 -0
- package/skills/showdar-review/references/maintainability.md +3 -0
- package/skills/showdar-review/references/performance.md +3 -0
- package/skills/showdar-review/references/security.md +3 -0
- package/skills/showdar-review/references/testing.md +3 -0
- package/skills/showdar-review/scripts/collect-diff.mjs +5 -0
- package/skills/showdar-review/stacks/android.md +3 -0
- package/skills/showdar-review/stacks/flutter.md +3 -0
- package/skills/showdar-review/stacks/ios.md +3 -0
- package/skills/showdar-review/stacks/nextjs.md +3 -0
- package/skills/showdar-review/stacks/node-backend.md +3 -0
- package/skills/showdar-review/stacks/react-native.md +3 -0
- package/skills/showdar-review/stacks/react.md +3 -0
- package/skills/showdar-review/stacks/swift-kotlin.md +3 -0
- package/skills/showdar-review/stacks/typescript.md +3 -0
- package/skills/showdar-security/SKILL.md +169 -0
- package/skills/showdar-security/data/index.json +14 -0
- package/skills/showdar-security/data/security-patterns.csv +13 -0
- package/skills/showdar-security/examples/api-authorization-review.md +9 -0
- package/skills/showdar-security/examples/mobile-deeplink-review.md +7 -0
- package/skills/showdar-security/examples/secret-exposure-review.md +5 -0
- package/skills/showdar-security/examples/threat-model-open-assumptions.md +11 -0
- package/skills/showdar-security/references/authz-secrets.md +7 -0
- package/skills/showdar-security/references/mobile-security.md +7 -0
- package/skills/showdar-security/references/supply-chain.md +5 -0
- package/skills/showdar-security/references/threat-modeling.md +12 -0
- package/skills/showdar-security/scripts/inspect-security-surface.mjs +47 -0
- package/skills/showdar-ship/SKILL.md +234 -0
- package/skills/showdar-ship/data/index.json +14 -0
- package/skills/showdar-ship/data/release-checks.csv +28 -0
- package/skills/showdar-ship/examples/release-report.md +25 -0
- package/skills/showdar-ship/references/migrations.md +12 -0
- package/skills/showdar-ship/references/post-deploy.md +12 -0
- package/skills/showdar-ship/references/release-readiness.md +13 -0
- package/skills/showdar-ship/references/rollback.md +12 -0
- package/skills/showdar-ship/references/secrets.md +3 -0
- package/skills/showdar-ship/scripts/detect-targets.mjs +5 -0
- package/skills/showdar-ship/scripts/lib/detect-stack.mjs +48 -0
- package/skills/showdar-ship/scripts/release-check.mjs +6 -0
- package/skills/showdar-ship/stacks/android.md +33 -0
- package/skills/showdar-ship/stacks/docker.md +30 -0
- package/skills/showdar-ship/stacks/electron.md +7 -0
- package/skills/showdar-ship/stacks/ios.md +34 -0
- package/skills/showdar-ship/stacks/nextjs.md +30 -0
- package/skills/showdar-ship/stacks/node-backend.md +37 -0
- package/skills/showdar-ship/stacks/orchestration.md +12 -0
- package/skills/showdar-ship/stacks/tauri.md +35 -0
- package/skills/showdar-ship/stacks/web.md +35 -0
- package/skills/showdar-test/SKILL.md +164 -0
- package/skills/showdar-test/data/index.json +14 -0
- package/skills/showdar-test/data/test-strategy.csv +22 -0
- package/skills/showdar-test/examples/regression.md +14 -0
- package/skills/showdar-test/references/e2e.md +3 -0
- package/skills/showdar-test/references/integration.md +3 -0
- package/skills/showdar-test/references/regression.md +3 -0
- package/skills/showdar-test/references/test-smells.md +3 -0
- package/skills/showdar-test/references/unit.md +3 -0
- package/skills/showdar-test/scripts/detect-test-tools.mjs +6 -0
- package/skills/showdar-test/stacks/android-testing.md +13 -0
- package/skills/showdar-test/stacks/detox.md +13 -0
- package/skills/showdar-test/stacks/flutter-test.md +13 -0
- package/skills/showdar-test/stacks/integration-test.md +13 -0
- package/skills/showdar-test/stacks/jest.md +13 -0
- package/skills/showdar-test/stacks/playwright.md +13 -0
- package/skills/showdar-test/stacks/react-native-testing.md +17 -0
- package/skills/showdar-test/stacks/react-testing-library.md +13 -0
- package/skills/showdar-test/stacks/vitest.md +13 -0
- package/skills/showdar-test/stacks/xctest.md +13 -0
- package/skills/showdar-understand/SKILL.md +159 -0
- package/skills/showdar-understand/data/architecture-signals.csv +28 -0
- package/skills/showdar-understand/data/index.json +14 -0
- package/skills/showdar-understand/examples/repository-audit.md +17 -0
- package/skills/showdar-understand/references/architecture-signals.md +25 -0
- package/skills/showdar-understand/references/dependency-analysis.md +9 -0
- package/skills/showdar-understand/references/repository-analysis.md +24 -0
- package/skills/showdar-understand/scripts/inspect-repo.mjs +16 -0
- package/skills/showdar-understand/scripts/lib/detect-stack.mjs +48 -0
- package/skills/showdar-understand/stacks/android.md +3 -0
- package/skills/showdar-understand/stacks/backend.md +5 -0
- package/skills/showdar-understand/stacks/electron.md +3 -0
- package/skills/showdar-understand/stacks/fastify.md +3 -0
- package/skills/showdar-understand/stacks/flutter.md +3 -0
- package/skills/showdar-understand/stacks/ios.md +3 -0
- package/skills/showdar-understand/stacks/mobile.md +5 -0
- package/skills/showdar-understand/stacks/nestjs.md +3 -0
- package/skills/showdar-understand/stacks/nextjs.md +3 -0
- package/skills/showdar-understand/stacks/node.md +3 -0
- package/skills/showdar-understand/stacks/react-native.md +3 -0
- package/skills/showdar-understand/stacks/react.md +3 -0
- package/skills/showdar-understand/stacks/tauri.md +3 -0
- package/skills/showdar-upgrade/SKILL.md +162 -0
- package/skills/showdar-upgrade/data/compatibility-checklist.csv +24 -0
- package/skills/showdar-upgrade/data/index.json +14 -0
- package/skills/showdar-upgrade/examples/upgrade-report.md +18 -0
- package/skills/showdar-upgrade/references/breaking-changes.md +3 -0
- package/skills/showdar-upgrade/references/compatibility.md +3 -0
- package/skills/showdar-upgrade/references/dependency-resolution.md +3 -0
- package/skills/showdar-upgrade/references/migration-strategy.md +3 -0
- package/skills/showdar-upgrade/references/rollback.md +3 -0
- package/skills/showdar-upgrade/scripts/inspect-dependencies.mjs +6 -0
- package/skills/showdar-upgrade/scripts/lib/detect-stack.mjs +48 -0
- package/skills/showdar-upgrade/stacks/android.md +15 -0
- package/skills/showdar-upgrade/stacks/cocoapods-spm.md +17 -0
- package/skills/showdar-upgrade/stacks/expo.md +17 -0
- package/skills/showdar-upgrade/stacks/flutter.md +17 -0
- package/skills/showdar-upgrade/stacks/gradle.md +13 -0
- package/skills/showdar-upgrade/stacks/ios.md +15 -0
- package/skills/showdar-upgrade/stacks/nextjs.md +17 -0
- package/skills/showdar-upgrade/stacks/node.md +17 -0
- package/skills/showdar-upgrade/stacks/react-native.md +17 -0
- package/skills/showdar-upgrade/stacks/react.md +17 -0
- package/skills/showdar-upgrade/stacks/tauri-rust.md +15 -0
- package/src/adapters.js +44 -0
- package/src/catalog.js +57 -0
- package/src/project.js +287 -0
- package/src/runtime.js +9 -0
- package/src/validate.js +310 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
id,category,surface,inspect,common_breakage,mitigation,verification,rollback,tags,reference,stack
|
|
2
|
+
runtime-node,runtime,Node runtime,engine range; native addons; ESM/CJS; OpenSSL,unsupported syntax or binary ABI,match supported runtime and rebuild native modules,version command plus clean install and tests,restore runtime and lockfile,runtime upgrade,references/compatibility.md,node
|
|
3
|
+
runtime-dart,runtime,Dart and Flutter SDK,sdk constraints; analyzer; channel,language or framework API mismatch,choose supported SDK pair before package edits,flutter analyze and test,restore SDK constraint and lockfile,flutter sdk,references/compatibility.md,dart
|
|
4
|
+
runtime-swift,runtime,Swift and Xcode,Swift language mode; Xcode; deployment target,compiler or SDK API mismatch,stage compiler and source migration,build and test affected schemes,restore Xcode and project settings,swift toolchain,references/compatibility.md,swift
|
|
5
|
+
runtime-kotlin,runtime,Kotlin and JDK,Kotlin plugin; JDK; Gradle; language level,compile plugin or bytecode mismatch,upgrade compatible toolchain tuple,release assemble and tests,restore Gradle and plugin versions,kotlin toolchain,references/compatibility.md,kotlin
|
|
6
|
+
dependency-direct,dependencies,direct dependency,manifest range; import usage; peer range,install resolves but runtime API changed,read release notes and search usage,install lock resolution plus tests,restore manifest and lockfile,dependency usage,references/dependency-resolution.md,*
|
|
7
|
+
dependency-peer,dependencies,peer dependency,peerDependencies and package manager resolver,duplicate framework or incompatible peer,upgrade owning framework and package together only when matrix supports it,clean install and peer report,restore prior compatible tuple,peer dependency,references/dependency-resolution.md,package-manager
|
|
8
|
+
dependency-transitive,dependencies,transitive dependency,package tree; duplicate versions; overrides,security or behavior differs through nested package,identify owner and use narrow override only with evidence,lockfile diff and affected tests,remove override and restore lockfile,transitive graph,references/dependency-resolution.md,package-manager
|
|
9
|
+
lockfile-integrity,lockfile,lockfile,lock format; importer or package sections; integrity metadata,unreviewable churn or nonreproducible install,upgrade with owning package manager and inspect diff,clean install from lockfile,restore previous lockfile,lockfile,references/dependency-resolution.md,package-manager
|
|
10
|
+
framework-react,framework,React migration,removed lifecycle or API; JSX types; compiler behavior,source compile or effect semantics change,search deprecated usage and migrate by invariant,typecheck plus component tests,restore React and types lockfile,react migration,references/breaking-changes.md,react
|
|
11
|
+
framework-next,framework,Next.js migration,Node minimum; routing; server/client; cache; config,build or rendering/cache behavior changes,migrate config and route boundaries separately,production build plus route smoke,restore framework config and lockfile,next migration,references/breaking-changes.md,nextjs
|
|
12
|
+
framework-rn,framework,React Native migration,React pairing; Metro/Babel; Hermes; architecture; native template,native build or runtime module mismatch,compare template and migrate native files selectively,Android release build and iOS archive where available,restore source native and lockfile,rn migration,references/breaking-changes.md,react-native
|
|
13
|
+
framework-expo,framework,Expo migration,SDK and React Native pairing; config plugins; native projects,prebuild or runtime module incompatibility,follow supported SDK pair and inspect generated diff,expo diagnostics and platform builds,restore SDK config and generated ownership,expo migration,references/breaking-changes.md,expo
|
|
14
|
+
framework-flutter,framework,Flutter framework migration,Dart SDK; deprecated widgets; plugin platform support,analyzer errors or layout/runtime changes,migrate deprecated APIs and pin plugins,analyze test and release builds,restore pubspec and generated files,flutter migration,references/breaking-changes.md,flutter
|
|
15
|
+
native-ios,native,CocoaPods and SPM,Podfile lock; Package.swift; deployment target; signing,link failure or missing capability,upgrade native dependency with minimum OS matrix,archive or scheme build and dependency resolution,restore Podfile.lock and SPM pins,native ios,references/compatibility.md,cocoapods
|
|
16
|
+
native-android,native,Android Gradle stack,Gradle; AGP; JDK; compile target min SDK namespace,task resource or signing failure,upgrade supported tuple before app code,release bundle and mapping artifact,restore Gradle files and pins,android gradle,references/compatibility.md,gradle
|
|
17
|
+
native-tauri,native,Tauri and Rust,Rust toolchain; Tauri crates; frontend API; permissions,compile or capability policy failure,follow crate/API migration and review capabilities,release bundle plus clean install smoke,restore Cargo lock and config,tauri rust,references/breaking-changes.md,tauri
|
|
18
|
+
codegen,generated,code generation,source schema; generator version; generated ownership,generated API drift or stale artifacts,regenerate from source and inspect only owned diff,clean regeneration and compile,restore generated output and generator,codegen,references/migration-strategy.md,*
|
|
19
|
+
codemod,source migration,codemod output,matched files; skipped patterns; formatting,partial automated migration,review every changed callsite and keep codemod log,search old API plus tests,restore source checkpoint,codemod,references/migration-strategy.md,*
|
|
20
|
+
database-schema,data migration,migration compatibility,old app readers; new schema; rollback reader,old app cannot read new schema or rollback loses data,expand migrate contract with compatibility window,old and new fixtures plus migration dry run,restore app before contract and use backup,db migration,references/rollback.md,node
|
|
21
|
+
minimum-platform,platform,minimum OS or SDK,iOS deployment; Android min target; browser runtime support,users excluded or build policy changes,make support change explicit product decision,build matrix and supported-device check,restore minimum and release config,minimum platform,references/compatibility.md,*
|
|
22
|
+
staged-upgrade,rollout,staged upgrade,intermediate compatibility and rollout gates,large jump hides causal failure,split runtime framework native and source steps,verify each checkpoint before next,stop at last proven checkpoint,staged migration,references/migration-strategy.md,*
|
|
23
|
+
rollback-lock,rollback,rollback boundary,previous manifest lockfile artifact and schema compatibility,rollback command cannot reproduce prior build,preserve artifact and document irreversible steps,build from restored state,restore previous version and compatible config,rollback,references/rollback.md,*
|
|
24
|
+
security-patch,security,security patch,advisory; affected range; runtime exposure,patch absent or forced incompatible version,choose supported patched version and test narrow path,dependency audit plus regression suite,backport prior safe version if patch path fails,security update,references/breaking-changes.md,*
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"skill": "showdar-upgrade",
|
|
4
|
+
"datasets": [
|
|
5
|
+
{
|
|
6
|
+
"file": "data/compatibility-checklist.csv",
|
|
7
|
+
"idField": "id",
|
|
8
|
+
"requiredColumns": ["id", "category", "surface", "inspect", "common_breakage", "mitigation", "verification", "rollback", "tags", "reference", "stack"],
|
|
9
|
+
"searchableFields": ["category", "surface", "inspect", "common_breakage", "mitigation", "verification", "rollback", "tags"],
|
|
10
|
+
"filterFields": ["category", "stack"],
|
|
11
|
+
"reference": "references/compatibility.md"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Example upgrade report
|
|
2
|
+
|
|
3
|
+
Target: React Native `0.74` -> `0.76` with the repository's pinned Node and
|
|
4
|
+
Android/iOS toolchains retained until compatibility is proven.
|
|
5
|
+
|
|
6
|
+
Inventory: direct and peer dependencies, lockfile, Metro/Babel config, Hermes,
|
|
7
|
+
native Podfile/Gradle plugins, minimum OS versions, CI images, and generated code.
|
|
8
|
+
|
|
9
|
+
Compatibility findings: the framework upgrade changes the native template and
|
|
10
|
+
may change peer ranges; the repository must prove every native module before
|
|
11
|
+
enabling the new architecture. Do not infer compatibility from install success.
|
|
12
|
+
|
|
13
|
+
Migration order: update direct constraints, resolve lockfile, apply codemods,
|
|
14
|
+
regenerate native/codegen artifacts, run JS tests, then build and test iOS and
|
|
15
|
+
Android. Keep the old build available and gate risky runtime behavior.
|
|
16
|
+
|
|
17
|
+
Report each command by platform, mark TestFlight/store processing as unverified
|
|
18
|
+
when it was not observed, and define the first safe rollback boundary.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Breaking changes
|
|
2
|
+
|
|
3
|
+
Read official migration and release notes for every crossed boundary that can alter API or tooling. Search the repository for removed, deprecated, renamed APIs, config keys, and behavior assumptions before changing versions. Separate source migration from generated, native, build, and deployment migration. Record each changed usage, required edit, and proof; do not infer that a successful install means the migration is complete.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Compatibility analysis
|
|
2
|
+
|
|
3
|
+
Build a matrix across runtime/framework, language/toolchain, native platform minimums, peer dependencies, build plugins, generated/codegen versions, and deployment environment. Record current, target, supported range, evidence source, and verification. Treat undocumented combinations as risk, not automatic incompatibility. A manifest constraint is weaker evidence than a resolved lockfile plus target build.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Dependency resolution
|
|
2
|
+
|
|
3
|
+
Record current version, requested target, direct/peer/platform constraints, lockfile owner, package manager, and duplicated/transitive versions that affect runtime. Inspect why a resolver selected each critical version and whether overrides hide an incompatible peer. Preserve lockfile integrity and review churn. Do not assume latest is compatible with the current framework, toolchain, native target, or deployment runtime.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Migration strategy
|
|
2
|
+
|
|
3
|
+
Prefer one controlled version step when changes are coupled and testable; use staged upgrades when intermediate compatibility is required or blast radius is large. Define ordering across runtime, framework, native, source, codegen, and lockfile changes. Regenerate only owned artifacts, inspect template diffs, and verify each checkpoint before the next. Stop at the last proven checkpoint when a later layer fails.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Upgrade rollback
|
|
2
|
+
|
|
3
|
+
Preserve previous manifest, lockfile, toolchain, artifact, and configuration where practical. Identify irreversible steps such as database migrations, Xcode/Gradle project transforms, codegen format changes, capability changes, or minimum OS changes. A rollback plan must name what can actually be restored, schema compatibility, and the trigger for stopping. “Reinstall” is not a rollback if it changes the resolved graph.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { access, readFile } from 'node:fs/promises'; import path from 'node:path'; import { detectStacks } from './lib/detect-stack.mjs';
|
|
3
|
+
const root=path.resolve(process.argv[2]??process.cwd()); const out={root,stacks:await detectStacks(root)};
|
|
4
|
+
try{const p=JSON.parse(await readFile(path.join(root,'package.json'),'utf8'));out.node={engines:p.engines??{},dependencies:p.dependencies??{},devDependencies:p.devDependencies??{},peerDependencies:p.peerDependencies??{}}}catch{}
|
|
5
|
+
try{await access(path.join(root,'pubspec.yaml'));out.pubspec=(await readFile(path.join(root,'pubspec.yaml'),'utf8')).slice(0,20000)}catch{}
|
|
6
|
+
console.log(JSON.stringify(out,null,2));
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { access, readdir, readFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
|
|
4
|
+
async function exists(target) { try { await access(target); return true; } catch { return false; } }
|
|
5
|
+
|
|
6
|
+
export async function detectStacks(projectRoot) {
|
|
7
|
+
const found = new Set();
|
|
8
|
+
try {
|
|
9
|
+
const names = await readdir(projectRoot);
|
|
10
|
+
if (names.some((name) => ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb'].includes(name))) found.add('package-manager');
|
|
11
|
+
if (names.some((name) => ['pnpm-workspace.yaml', 'lerna.json', 'turbo.json', 'nx.json'].includes(name))) found.add('workspace');
|
|
12
|
+
if (names.some((name) => name.endsWith('.xcodeproj') || name.endsWith('.xcworkspace'))) found.add('ios');
|
|
13
|
+
} catch { /* inaccessible repository is reported by the caller */ }
|
|
14
|
+
const packageFile = path.join(projectRoot, 'package.json');
|
|
15
|
+
if (await exists(packageFile)) {
|
|
16
|
+
try {
|
|
17
|
+
const pkg = JSON.parse(await readFile(packageFile, 'utf8'));
|
|
18
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}), ...(pkg.peerDependencies ?? {}) };
|
|
19
|
+
if (pkg.packageManager) found.add('package-manager');
|
|
20
|
+
if (pkg.workspaces) found.add('workspace');
|
|
21
|
+
if (deps.next) found.add('nextjs');
|
|
22
|
+
if (deps.react) found.add('react');
|
|
23
|
+
if (deps['react-native']) found.add('react-native');
|
|
24
|
+
if (deps.vue) found.add('vue');
|
|
25
|
+
if (deps.svelte) found.add('svelte');
|
|
26
|
+
if (deps.tailwindcss) found.add('html-tailwind');
|
|
27
|
+
if (deps.fastify || deps['@fastify/core']) found.add('fastify');
|
|
28
|
+
if (deps['@nestjs/core']) found.add('nestjs');
|
|
29
|
+
if (deps['@tauri-apps/api']) found.add('tauri');
|
|
30
|
+
if (deps.electron) found.add('electron');
|
|
31
|
+
if (deps.expo || deps['expo-router']) found.add('expo');
|
|
32
|
+
found.add('node');
|
|
33
|
+
} catch { /* malformed package is reported by higher-level skills */ }
|
|
34
|
+
}
|
|
35
|
+
if (await exists(path.join(projectRoot, 'pubspec.yaml'))) {
|
|
36
|
+
const pubspec = await readFile(path.join(projectRoot, 'pubspec.yaml'), 'utf8');
|
|
37
|
+
if (/\bflutter\s*:/m.test(pubspec)) found.add('flutter');
|
|
38
|
+
found.add('dart');
|
|
39
|
+
}
|
|
40
|
+
if (await exists(path.join(projectRoot, 'ios'))) found.add('ios');
|
|
41
|
+
if (await exists(path.join(projectRoot, 'android'))) found.add('android');
|
|
42
|
+
if (await exists(path.join(projectRoot, 'Package.swift'))) { found.add('swift'); found.add('spm'); }
|
|
43
|
+
if (await exists(path.join(projectRoot, 'Cargo.toml'))) found.add('rust');
|
|
44
|
+
if (await exists(path.join(projectRoot, 'go.mod'))) found.add('go');
|
|
45
|
+
if (await exists(path.join(projectRoot, 'pyproject.toml')) || await exists(path.join(projectRoot, 'requirements.txt'))) found.add('python');
|
|
46
|
+
if (await exists(path.join(projectRoot, '.github', 'workflows')) || await exists(path.join(projectRoot, '.gitlab-ci.yml')) || await exists(path.join(projectRoot, 'Jenkinsfile'))) found.add('ci');
|
|
47
|
+
return [...found].sort();
|
|
48
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Android platform upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record current/target JDK, Gradle, AGP, Kotlin, compile/target/min SDK, Android Studio, plugins, application ID, ABI, and release signing. Verify the supported tuple and whether min/target SDK or Play policy changes affect the product/device matrix. Inspect direct/peer/transitive resolution and preserve dependency locks where used.
|
|
6
|
+
|
|
7
|
+
## Breaking and native surfaces
|
|
8
|
+
|
|
9
|
+
Read AGP/SDK/Kotlin migration notes and search for namespace, manifest merger, exported-component, resource, permission, packaging, and deprecated API changes. Separate source changes from generated build files, version catalogs, manifests/resources, R8/ProGuard rules, native symbols, and signing configuration. Compare variant outputs because Debug can hide shrinker, resource, ABI, or release-only failures.
|
|
10
|
+
|
|
11
|
+
## Rollback and verification
|
|
12
|
+
|
|
13
|
+
Keep the previous Gradle/AGP/JDK tuple, lockfiles, mapping/symbol artifacts, signed bundle, and project diff. Rollback may be constrained by target-SDK policy, version codes, schema/data, or already-installed clients; define a forward-fix path. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
Run clean dependency resolution, unit/instrumentation tests, debug and release bundle tasks, R8/mapping checks, and install/update smoke on affected API/ABI classes. Verify manifest/resources, permissions, deep links/push, process restoration, signing, and native crash symbolization.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# CocoaPods and Swift Package Manager upgrades
|
|
2
|
+
|
|
3
|
+
## Inventory and ownership
|
|
4
|
+
|
|
5
|
+
Record Xcode/Swift, deployment target, package/plugin versions, `Podfile.lock`, `Package.resolved`, local/path packages, target membership, build settings, binary frameworks, and generated workspace/project ownership. Check direct and transitive constraints, duplicate products, static versus dynamic linkage, and whether a package requires a newer OS or Swift language mode.
|
|
6
|
+
|
|
7
|
+
## Controlled migration
|
|
8
|
+
|
|
9
|
+
Upgrade one native dependency boundary at a time. Read release notes, search API/deprecation usage, resolve Pods/SPM without deleting lockfiles, and inspect the resolved graph and build settings for unexpected churn. Compare generated workspace/project diffs and preserve app-specific build phases, scripts, signing, capabilities, and resources. If a package changes module name, resources, linkage, or concurrency requirements, migrate source separately from resolution.
|
|
10
|
+
|
|
11
|
+
## Failure modes and rollback
|
|
12
|
+
|
|
13
|
+
Watch for CDN/cache masking, checksum failure, duplicate symbols, module-map/header changes, transitive minimum-OS increases, simulator/device architecture mismatch, and a package that builds in Debug but fails at archive. Keep previous lockfiles and a buildable archive; reinstalling dependencies is not rollback if it changes the graph. Read `references/dependency-resolution.md`, `references/compatibility.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run dependency resolution, focused tests, the affected scheme, and a release/archive build on the required simulator/device architecture. Inspect `Package.resolved`/`Podfile.lock`, link warnings, signing/entitlements, and runtime flows that cross the upgraded framework.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Expo upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility and ownership
|
|
4
|
+
|
|
5
|
+
Record current/target Expo SDK, React Native, React, Node, platform SDKs, config plugins, and whether `ios/`/`android/` are generated, committed, or hand-owned. Check Expo's supported React/RN tuple and plugin peer ranges; do not infer compatibility from a successful JavaScript install. Preserve lockfiles and inspect prebuild/template ownership before changing native files.
|
|
6
|
+
|
|
7
|
+
## Migration sequence
|
|
8
|
+
|
|
9
|
+
Read the target Expo SDK notes, search deprecated config/API usage, and separate app-config edits, config-plugin behavior, prebuild output, source changes, and native project changes. Compare `expo prebuild` output to the current native diff before regenerating. For a managed project verify config at build time; for a bare/prebuild project verify the generated native files plus app-specific edits. Treat credentials, permissions, entitlements, schemes, and build profiles as release surfaces.
|
|
10
|
+
|
|
11
|
+
## Wrong turns and rollback
|
|
12
|
+
|
|
13
|
+
Do not run prebuild with overwrite behavior over hand-owned native changes, mix SDK and unrelated package upgrades, or use a compatibility flag without understanding its boundary. Keep the previous package/native state and build profile so a failed prebuild or plugin migration can be restored. Read `references/compatibility.md`, `references/migration-strategy.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run dependency resolution, Expo diagnostics, tests, a clean prebuild diff, Metro bundle, and release-like Android/iOS builds. Smoke permissions, notifications, deep links, updates, and native plugins on each affected platform; record whether testing used a development client, simulator, or store-like artifact.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Flutter upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record Flutter channel/version, Dart SDK, package manager lockfile, Android Gradle/AGP/Kotlin/JDK, Xcode/Swift/CocoaPods, minimum iOS/Android versions, renderer, and plugin versions. Check each plugin's platform support and transitive constraints; Flutter SDK and Dart constraints must resolve together.
|
|
6
|
+
|
|
7
|
+
## Breaking and generated work
|
|
8
|
+
|
|
9
|
+
Read the target Flutter/Dart migration notes and search for deprecated APIs, changed nullability/lifecycle behavior, rendering assumptions, plugin registration, and platform-channel payloads. Separate Dart source migration from `android/`, `ios/`, CocoaPods/Gradle, and generated platform files. Compare generated files to their source-of-truth and do not overwrite app-specific runner settings blindly. Inspect analyzer/lint changes as migration signals, not merely cleanup.
|
|
10
|
+
|
|
11
|
+
## Sequence and rollback
|
|
12
|
+
|
|
13
|
+
Prefer Flutter/Dart first, then source API migration, plugin updates, and native toolchain changes when the supported matrix allows; split the steps if Gradle/Xcode failures would otherwise be ambiguous. Preserve `pubspec.lock`, native lockfiles, generated files, and the previous SDK/toolchain. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run `flutter pub get`, `flutter analyze`, focused/unit/widget tests, integration tests, and profile/release Android/iOS builds. Smoke platform channels, permissions, background/foreground, deep links, images/fonts, and plugin behavior on each target; verify generated artifacts are reproducible from the migrated sources.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Gradle and Android upgrades
|
|
2
|
+
|
|
3
|
+
## Upgrade the tuple
|
|
4
|
+
|
|
5
|
+
Treat JDK, Gradle, AGP, Kotlin, compile/target SDK, Android Studio, and build plugins as a supported tuple. Record current/target versions and the package-manager/lock policy before changing one. Check plugin and convention-build peer constraints, repositories, dependency substitution, version catalogs, and duplicated transitive versions; do not use `--refresh-dependencies` or force flags as the final compatibility strategy.
|
|
6
|
+
|
|
7
|
+
## Inspect generated and variant changes
|
|
8
|
+
|
|
9
|
+
Read AGP/Gradle/Kotlin migration notes, then search for removed DSLs, namespace requirements, manifest/resource behavior, task wiring, configuration-cache assumptions, and deprecated APIs. Compare generated sources, manifests, resource merges, variant graphs, R8/ProGuard rules, signing, and native ABI outputs. Keep source, build-script, generated, and lockfile edits separable so the first failing task remains attributable.
|
|
10
|
+
|
|
11
|
+
## Rollback and verification
|
|
12
|
+
|
|
13
|
+
Preserve the previous wrapper, JDK/toolchain, lockfiles, mapping/native symbols, signed artifact, and project diff. Upgrade in the smallest diagnosable step, then run `./gradlew` dependency/report checks, unit tests, lint, debug APK, and release AAB tasks. Install the resulting artifacts with `adb`, exercise process/lifecycle/permission paths, and verify R8 mapping and signing for the exact release. Read `references/dependency-resolution.md`, `references/migration-strategy.md`, and `references/rollback.md`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# iOS platform upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record current/target Xcode, Swift, SDK, deployment target, architecture, CocoaPods/SPM versions, lockfiles, build settings, signing configuration, and every native framework/plugin. Check whether the target raises minimum OS requirements or changes device/simulator availability; that is a product/release decision, not a silent build fix.
|
|
6
|
+
|
|
7
|
+
## Migration surfaces
|
|
8
|
+
|
|
9
|
+
Read Xcode/Swift/platform release notes and search for deprecated APIs, concurrency/actor annotations, linker/build-setting changes, privacy manifests, permission usage descriptions, entitlements, capabilities, and SDK-required declarations. Separate source migration from Pods/SPM resolution, generated project files, signing/export configuration, and archive changes. Compare project/template diffs and preserve app-specific targets/settings.
|
|
10
|
+
|
|
11
|
+
## Rollback and verification
|
|
12
|
+
|
|
13
|
+
Keep the previous Xcode/toolchain, Podfile.lock/Package.resolved, project diff, archive, and dSYM. Rollback may be limited by minimum OS, local data, entitlements, or store distribution state; define the last buildable checkpoint. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
Run focused XCTest, `xcodebuild` build/archive for affected schemes, signing/entitlement validation, and device/simulator smoke. Verify permissions, push/deep links, background behavior, native frameworks, symbol artifacts, and release configuration on the supported OS matrix.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Next.js upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record current and target Next.js, React/React DOM, Node, package manager, router, output mode, bundler, and deployment runtime. Check peer ranges and provider support as one tuple; a package install does not prove that App Router/Pages Router, Node, serverless, or edge behavior remains supported. Preserve the lockfile and inspect direct/transitive framework packages.
|
|
6
|
+
|
|
7
|
+
## Breaking and generated surfaces
|
|
8
|
+
|
|
9
|
+
Read the target release/migration notes, then search for changed routing/data APIs, server/client boundaries, middleware/runtime config, image/font handling, cache/revalidation semantics, server actions, and deprecated config keys. Separate source edits from codemods, generated route/build output, and deployment configuration. For App Router, audit client components and cache invalidation; for Pages Router, audit data functions and fallback/rewrites.
|
|
10
|
+
|
|
11
|
+
## Migration and rollback
|
|
12
|
+
|
|
13
|
+
Upgrade React pairing and Next.js in a controlled step when supported; split the change if the target requires a Node/toolchain change or a large template diff. Keep the previous manifest/lockfile and deployable artifact. Do not overwrite custom config or native/provider settings with a template blindly. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/migration-strategy.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run install/lockfile validation, typecheck/lint/tests, `next build`, and `next start` or the provider-equivalent output. Smoke direct load/client navigation, auth, route handlers/server actions, static assets, cache invalidation, error paths, and the supported Node/edge deployment target.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Node upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record current/target Node, package manager, lockfile owner, engine ranges, module mode, native addons, container base image, OS/architecture, and deployment runtime. Check direct/peer dependencies and duplicated transitive packages that depend on Node internals. Resolve the target graph without deleting the lockfile; explain overrides and native rebuilds.
|
|
6
|
+
|
|
7
|
+
## Breaking surfaces
|
|
8
|
+
|
|
9
|
+
Read Node release notes for ESM/CJS loader, built-in APIs, permissions, OpenSSL/TLS, Web APIs, diagnostics, and default error behavior. Search the repository for deprecated APIs, conditional exports, dynamic `require`, native addon ABI assumptions, test/build tool compatibility, and environment parsing. Separate source changes from generated lockfile, container, and process-manager changes.
|
|
10
|
+
|
|
11
|
+
## Sequence and rollback
|
|
12
|
+
|
|
13
|
+
Upgrade the runtime in a reproducible dev/container environment, then migrate source/tooling and native addons; do not combine unrelated dependency churn. Preserve the previous Node image, lockfile, artifact, and process configuration. A rollback must account for data written by the new runtime and any changed TLS/protocol behavior. Read `references/dependency-resolution.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run clean install, typecheck/lint/tests, build, native-addon load checks, production-equivalent start, timeout/shutdown/error paths, and container smoke. Verify ESM/CJS entry points, OpenSSL/TLS connections, worker/process behavior, and runtime version parity in the deployed artifact.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# React Native upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility tuple
|
|
4
|
+
|
|
5
|
+
Record current/target RN core, React, Node, Metro, Babel, Hermes, New Architecture setting, Android Gradle/AGP/Kotlin/JDK, CocoaPods/Xcode, deployment targets, and every native module peer range. Treat Expo SDK as an additional owner when present. Resolve the graph from the repository lockfiles and verify the target's supported tuple before editing versions.
|
|
6
|
+
|
|
7
|
+
## Migration surfaces
|
|
8
|
+
|
|
9
|
+
Read official RN release/template notes and search for removed APIs, changed event/layout semantics, Metro/Babel config, codegen, TurboModule/Fabric assumptions, and native project diffs. Inspect `android/` and `ios/` ownership before applying template changes; generated files, Podfile.lock, Gradle lockfiles, codegen output, and native module registration are separate migration surfaces. Check Hermes bytecode/source-map behavior and New Architecture compatibility for each native dependency.
|
|
10
|
+
|
|
11
|
+
## Sequencing and rollback
|
|
12
|
+
|
|
13
|
+
Upgrade one layer at a time when it keeps failures diagnosable: RN/React, JS toolchain, Android tuple, iOS tuple, then native modules and generated artifacts. Preserve manifests, lockfiles, native project diff, and a buildable previous commit. Do not disable Hermes/New Architecture or use force-resolution as the migration strategy. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run clean dependency resolution, lint/typecheck/tests, Metro bundle, Android debug and release-like builds, iOS build/archive, and native-module smoke. Verify navigation, permissions, deep links, background/restore, Hermes/architecture mode, and both platform artifacts; report any platform not available.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# React upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record current/target React and React DOM, renderer/test packages, Node, bundler/framework, TypeScript types, peer dependencies, and lockfile. Keep React/React DOM/types paired according to the target release and check libraries that depend on renderer internals or legacy context. A successful resolver does not prove that concurrent rendering, server components, or the chosen framework remains supported.
|
|
6
|
+
|
|
7
|
+
## Breaking and migration work
|
|
8
|
+
|
|
9
|
+
Read the target React release/migration notes, then search for deprecated lifecycle APIs, string refs, legacy context, unsafe effects, `findDOMNode`, event assumptions, hydration behavior, and library-specific peer warnings. Separate codemods from manual state/effect changes and from framework/server-client migration. Test Strict Mode and production behavior when development-only double invocation or scheduling exposes a lifecycle defect.
|
|
10
|
+
|
|
11
|
+
## Sequence and rollback
|
|
12
|
+
|
|
13
|
+
Upgrade React pairing and types first when supported, apply codemods only to owned code, then update renderer/framework integrations and remove deprecated usage. Keep the previous manifest/lockfile and buildable artifact; do not silence peer warnings or force resolution without identifying the owner. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
Run clean install, typecheck/lint, component/integration tests, production build, and browser smoke. Verify render/state/effect behavior, hydration if applicable, accessibility, error boundaries, Suspense/async paths, and the supported browser/runtime matrix.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Tauri and Rust upgrades
|
|
2
|
+
|
|
3
|
+
## Compatibility surface
|
|
4
|
+
|
|
5
|
+
Record Tauri/core/plugin crate versions, Rust toolchain/target triples, frontend framework/bundler, WebView runtime, capability schema, bundle targets, signing, and updater format. Check crate feature flags, frontend API pairing, OS minimums, architecture-specific native dependencies, and lockfiles (`Cargo.lock` plus frontend lockfile). Treat generated config and platform bundles as separate ownership boundaries.
|
|
6
|
+
|
|
7
|
+
## Migration surfaces
|
|
8
|
+
|
|
9
|
+
Read Tauri/Rust migration notes and search command names, IPC payload types, plugin APIs, capability permissions, window/config keys, updater metadata, and frontend assumptions. Migrate Rust commands/permissions and frontend callers together, then compare generated/platform files rather than overwriting app-specific settings. Inspect `cargo tree` and target-specific feature resolution for hidden native changes.
|
|
10
|
+
|
|
11
|
+
## Rollback and verification
|
|
12
|
+
|
|
13
|
+
Preserve previous manifests, lockfiles, Rust toolchain, capability config, signed artifacts, updater keys/endpoints, and a clean install path. A capability/schema or local-data change may require a forward fix rather than downgrade. Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/rollback.md`.
|
|
14
|
+
|
|
15
|
+
Run `cargo test`, frontend tests, target release bundle, signature/notarization verification, and clean-machine install/update smoke. Verify IPC errors, filesystem/network permissions, startup, restart, updater failure/recovery, and every affected target triple.
|
package/src/adapters.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
|
|
4
|
+
export const NATIVE_TARGETS = ['codex', 'opencode', 'claude', 'universal'];
|
|
5
|
+
|
|
6
|
+
const ROOTS = {
|
|
7
|
+
codex: ['.agents', 'skills'],
|
|
8
|
+
opencode: ['.opencode', 'skills'],
|
|
9
|
+
claude: ['.claude', 'skills'],
|
|
10
|
+
universal: ['.agents', 'skills'],
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const GLOBAL_ROOTS = {
|
|
14
|
+
codex: ({ homeRoot }) => path.join(homeRoot, '.agents', 'skills'),
|
|
15
|
+
opencode: ({ homeRoot }) => path.join(homeRoot, '.config', 'opencode', 'skills'),
|
|
16
|
+
claude: ({ homeRoot }) => path.join(homeRoot, '.claude', 'skills'),
|
|
17
|
+
universal: ({ homeRoot }) => path.join(homeRoot, '.agents', 'skills'),
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export function resolveTargets(ai) {
|
|
21
|
+
if (ai === 'all') return [...NATIVE_TARGETS];
|
|
22
|
+
if (!NATIVE_TARGETS.includes(ai)) throw new Error(`Unknown AI target "${ai}". Expected codex, opencode, claude, universal, or all.`);
|
|
23
|
+
return [ai];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function skillRootFor(target, projectRoot) {
|
|
27
|
+
const parts = ROOTS[target];
|
|
28
|
+
if (!parts) throw new Error(`Unknown AI target "${target}".`);
|
|
29
|
+
return path.join(projectRoot, ...parts);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function globalSkillRootFor(target, { homeRoot = homedir() } = {}) {
|
|
33
|
+
const resolve = GLOBAL_ROOTS[target];
|
|
34
|
+
if (!resolve) throw new Error(`Unknown AI target "${target}".`);
|
|
35
|
+
return resolve({ homeRoot });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function opencodeCommandRoot(projectRoot) {
|
|
39
|
+
return path.join(projectRoot, '.opencode', 'commands', 'showdar');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function globalCommandRootFor({ homeRoot = homedir() } = {}) {
|
|
43
|
+
return path.join(homeRoot, '.config', 'opencode', 'commands', 'showdar');
|
|
44
|
+
}
|
package/src/catalog.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export const SKILLS = [
|
|
2
|
+
{ id: 'showdar-understand', domain: 'understand', description: 'Use when mapping an unfamiliar repository, architecture, dependencies, or impact before deciding what to change.' },
|
|
3
|
+
{ id: 'showdar-plan', domain: 'plan', description: 'Use when agreed behavior needs a bounded implementation plan, change surface, task order, risks, or verification steps.' },
|
|
4
|
+
{ id: 'showdar-design', domain: 'design', description: 'Use when product UI needs design direction, UX decisions, responsive layout, accessibility, or visual polish.' },
|
|
5
|
+
{ id: 'showdar-build', domain: 'build', description: 'Use when implementing or refactoring an agreed application change within existing architecture and contracts.' },
|
|
6
|
+
{ id: 'showdar-debug', domain: 'debug', description: 'Use when observed behavior fails through crashes, regressions, build failures, races, networking, memory, or performance issues.' },
|
|
7
|
+
{ id: 'showdar-test', domain: 'test', description: 'Use when choosing or implementing automated tests for behavior, regressions, integration, E2E, or coverage.' },
|
|
8
|
+
{ id: 'showdar-review', domain: 'review', description: 'Use when reviewing code or diffs for general correctness, architecture, performance, maintainability, or tests.' },
|
|
9
|
+
{ id: 'showdar-upgrade', domain: 'upgrade', description: 'Use when upgrading dependencies, frameworks, runtimes, or native platforms and compatibility or rollback risk matters.' },
|
|
10
|
+
{ id: 'showdar-ship', domain: 'ship', description: 'Use when checking whether a change, artifact, or release is ready for handoff or external release.' },
|
|
11
|
+
{ id: 'showdar-recover', domain: 'recover', description: 'Use when interrupted or partial engineering work must be reconstructed from repository evidence before continuing.' },
|
|
12
|
+
{ id: 'showdar-git', domain: 'git', description: 'Use when performing local Git inspection, staging, commits, branch integration, conflicts, cleanup, or explicitly requested remote Git actions.' },
|
|
13
|
+
{ id: 'showdar-requirements', domain: 'requirements', description: 'Use when product or business input needs explicit behavior, rules, acceptance criteria, assumptions, or open decisions.' },
|
|
14
|
+
{ id: 'showdar-quality', domain: 'quality', description: 'Use when planning QA/QC scenarios, risk coverage, regression scope, compatibility checks, or bug-report evidence.' },
|
|
15
|
+
{ id: 'showdar-security', domain: 'security', description: 'Use when assessing threat models, attack surfaces, trust boundaries, auth/authz, secrets, exposure, or exploitability.' },
|
|
16
|
+
{ id: 'showdar-ops', domain: 'ops', description: 'Use when inspecting or changing CI/CD, containers, environments, deployment, observability, rollback, or runtime operations.' },
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
export const AI_TARGETS = ['codex', 'opencode', 'claude', 'universal', 'all'];
|
|
20
|
+
|
|
21
|
+
const ids = (...values) => values;
|
|
22
|
+
|
|
23
|
+
export const PROFILES = {
|
|
24
|
+
minimal: ids('showdar-understand', 'showdar-plan', 'showdar-build', 'showdar-debug', 'showdar-test', 'showdar-review', 'showdar-recover', 'showdar-git'),
|
|
25
|
+
developer: ids('showdar-understand', 'showdar-plan', 'showdar-design', 'showdar-build', 'showdar-debug', 'showdar-test', 'showdar-review', 'showdar-upgrade', 'showdar-ship', 'showdar-recover', 'showdar-git', 'showdar-security'),
|
|
26
|
+
backend: ids('showdar-understand', 'showdar-plan', 'showdar-build', 'showdar-debug', 'showdar-test', 'showdar-review', 'showdar-upgrade', 'showdar-ship', 'showdar-recover', 'showdar-git', 'showdar-requirements', 'showdar-quality', 'showdar-security', 'showdar-ops'),
|
|
27
|
+
qa: ids('showdar-understand', 'showdar-requirements', 'showdar-quality', 'showdar-test', 'showdar-debug', 'showdar-review', 'showdar-ship', 'showdar-recover', 'showdar-git'),
|
|
28
|
+
product: ids('showdar-understand', 'showdar-requirements', 'showdar-plan', 'showdar-design', 'showdar-quality', 'showdar-review'),
|
|
29
|
+
full: SKILLS.map((skill) => skill.id),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const PROFILE_ALIASES = {
|
|
33
|
+
mobile: 'developer',
|
|
34
|
+
web: 'developer',
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
function profileName(profile) {
|
|
38
|
+
return PROFILE_ALIASES[profile] ?? profile;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function canonicalProfile(profile) {
|
|
42
|
+
const canonical = profileName(profile);
|
|
43
|
+
if (!PROFILES[canonical]) throw new Error(`Unknown profile "${profile}". Expected one of: ${[...Object.keys(PROFILES), ...Object.keys(PROFILE_ALIASES)].join(', ')}`);
|
|
44
|
+
return canonical;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function isDeprecatedProfile(profile) {
|
|
48
|
+
return Object.hasOwn(PROFILE_ALIASES, profile);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function resolveProfile(profile) {
|
|
52
|
+
return [...PROFILES[canonicalProfile(profile)]];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function getSkill(id) {
|
|
56
|
+
return SKILLS.find((skill) => skill.id === id) ?? null;
|
|
57
|
+
}
|