opencode-skills-collection 4.0.68 → 4.0.70
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/bundled-skills/.antigravity-install-manifest.json +304 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/api-integration-architect/SKILL.md +241 -0
- package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
- package/bundled-skills/apify-integration-development/SKILL.md +168 -0
- package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
- package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
- package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
- package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/architecture-review/README.md +42 -0
- package/bundled-skills/architecture-review/SKILL.md +77 -0
- package/bundled-skills/architecture-review/examples.md +11 -0
- package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
- package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
- package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
- package/bundled-skills/architecture-review/reference/graph.md +15 -0
- package/bundled-skills/architecture-review/reference/mcp.md +14 -0
- package/bundled-skills/architecture-review/reference/workflow.md +15 -0
- package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/code-review-sensei/SKILL.md +177 -0
- package/bundled-skills/codebase-onboarding/README.md +42 -0
- package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
- package/bundled-skills/codebase-onboarding/examples.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
- package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
- package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
- package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
- package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
- package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
- package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
- package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-analysis/README.md +42 -0
- package/bundled-skills/dependency-analysis/SKILL.md +76 -0
- package/bundled-skills/dependency-analysis/examples.md +11 -0
- package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
- package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
- package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
- package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
- package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
- package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
- package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/eas-app-stores/SKILL.md +197 -0
- package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
- package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
- package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
- package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
- package/bundled-skills/eas-hosting/SKILL.md +448 -0
- package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/SKILL.md +75 -0
- package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/references/metrics.md +98 -0
- package/bundled-skills/eas-observe/references/queries.md +403 -0
- package/bundled-skills/eas-observe/references/setup.md +476 -0
- package/bundled-skills/eas-observe/references/third-party.md +136 -0
- package/bundled-skills/eas-simulator/SKILL.md +251 -0
- package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
- package/bundled-skills/eas-simulator/references/controllers.md +135 -0
- package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
- package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
- package/bundled-skills/eas-workflows/SKILL.md +119 -0
- package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/expo-animation/LICENSE +21 -0
- package/bundled-skills/expo-animation/RECIPES.md +385 -0
- package/bundled-skills/expo-animation/SKILL.md +295 -0
- package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
- package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
- package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
- package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
- package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
- package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
- package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
- package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
- package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
- package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
- package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpt-taste/SKILL.md +8 -1
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hf-cli/SKILL.md +263 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
- package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
- package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-social/SKILL.md +182 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
- package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
- package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
- package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
- package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
- package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
- package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
- package/bundled-skills/longbridge-quant/SKILL.md +151 -0
- package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
- package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
- package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
- package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
- package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
- package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
- package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
- package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
- package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
- package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
- package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
- package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
- package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
- package/bundled-skills/longbridge-research/SKILL.md +187 -0
- package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
- package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
- package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
- package/bundled-skills/longbridge-research/references/consensus.md +92 -0
- package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
- package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
- package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
- package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
- package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
- package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
- package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
- package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
- package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
- package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
- package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
- package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
- package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
- package/bundled-skills/longbridge-research/references/investors.md +87 -0
- package/bundled-skills/longbridge-research/references/onchain.md +70 -0
- package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
- package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
- package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
- package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
- package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
- package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
- package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
- package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
- package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
- package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
- package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
- package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
- package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
- package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
- package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
- package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
- package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
- package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
- package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/remotion-captions/SKILL.md +57 -0
- package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-captions/display-captions.md +190 -0
- package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
- package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
- package/bundled-skills/remotion-create/SKILL.md +106 -0
- package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-create/tailwind.md +11 -0
- package/bundled-skills/remotion-create/video-layout.md +9 -0
- package/bundled-skills/remotion-docs/SKILL.md +67 -0
- package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
- package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/SKILL.md +48 -0
- package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/transparent-videos.md +106 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/score-eval/SKILL.md +35 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/writing-guidelines/SKILL.md +60 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +7874 -277
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Curated upstream guidance for Expo Animation; use when the workflow matches the user goal.
|
|
3
|
+
name: expo-animation
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
license: MIT
|
|
6
|
+
source_repo: expo/skills
|
|
7
|
+
source_type: official
|
|
8
|
+
source: expo
|
|
9
|
+
date_added: '2026-09-21'
|
|
10
|
+
risk: unknown
|
|
11
|
+
---
|
|
12
|
+
## When to Use
|
|
13
|
+
- Use when this upstream workflow matches the user's stated goal.
|
|
14
|
+
- Use when the task requires the procedures documented in this skill.
|
|
15
|
+
|
|
16
|
+
# Building Animations in Expo
|
|
17
|
+
|
|
18
|
+
This skill was created in collaboration with [Emil Kowalski](https://github.com/emilkowalski) and can also be found in the [emilkowalski/skills](https://github.com/emilkowalski/skills) repository, along with other useful animation skills.
|
|
19
|
+
|
|
20
|
+
A construction skill for React Native. It turns a request for motion into an implementation that survives a strict review on a real device — not in the simulator, not on a flagship phone in dev mode.
|
|
21
|
+
|
|
22
|
+
Mobile changes three things about animation, and everything in this skill follows from them:
|
|
23
|
+
|
|
24
|
+
1. **There is no hover.** Every affordance the web puts in hover has to live in press, position, or nothing.
|
|
25
|
+
2. **There are two runtimes.** Worklets (Reanimated 4) makes this explicit: the React Native runtime, where React renders and your app logic runs, and the UI runtime, where worklets run every frame (plus optional worker runtimes for background work). An animation that touches the RN runtime stutters the moment the app does anything else. The whole craft is keeping motion on the UI runtime.
|
|
26
|
+
3. **The user's finger is on the element.** Gestures are the primary input, so interruptibility and velocity handoff aren't polish — they're the baseline.
|
|
27
|
+
|
|
28
|
+
## Operating Posture
|
|
29
|
+
|
|
30
|
+
You are a senior mobile engineer building the animation yourself. Make the call, state the reasoning in one line, write the code. Never present motion options as a menu.
|
|
31
|
+
|
|
32
|
+
Two failure modes, and the first is worse:
|
|
33
|
+
|
|
34
|
+
1. **Animating something that shouldn't animate.** The gate below exists to produce zero lines of code sometimes.
|
|
35
|
+
2. **Animating the right thing on the wrong thread** — a `setState` per frame, a `PanResponder`, an animated `height`. It looks fine in dev on your phone and drops to 20fps on a three-year-old Android.
|
|
36
|
+
|
|
37
|
+
## Hard Rules
|
|
38
|
+
|
|
39
|
+
1. **Run the sequence in order.** Steps 1 and 2 gate everything.
|
|
40
|
+
2. **Reanimated, not core `Animated`.** Core `Animated` can't be driven by a gesture without crossing the bridge, and `useNativeDriver` refuses anything but transform and opacity anyway. Reanimated worklets run on the UI thread and keep running while JS is busy.
|
|
41
|
+
3. **No approximated values.** Curves and spring configs come from the tables below.
|
|
42
|
+
4. **Reduced motion ships with the animation**, not as a follow-up.
|
|
43
|
+
5. **Feel is judged on a release build on the slowest device you support.** Nothing else counts as verified.
|
|
44
|
+
|
|
45
|
+
## The Build Sequence
|
|
46
|
+
|
|
47
|
+
### 1. Should this animate at all?
|
|
48
|
+
|
|
49
|
+
| Frequency | Decision |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| 100+ times/day — tab switches, keyboard open/close, scrolling, toggles in settings | **No animation.** Platform default or nothing. Stop here. |
|
|
52
|
+
| Tens of times/day — press feedback, list navigation, row selection | Near-imperceptible only: under 150ms, or nothing |
|
|
53
|
+
| Occasional — sheets, modals, toasts, onboarding steps | Standard animation |
|
|
54
|
+
| Rare / first-time — success states, empty-state illustrations, celebration | The delight budget lives here |
|
|
55
|
+
|
|
56
|
+
**Tab switches never slide.** Tabs are peers, not a hierarchy — sliding implies depth that isn't there, and the user pays for it dozens of times a session. `animation: 'none'`.
|
|
57
|
+
|
|
58
|
+
If the request fails this gate, say so and don't write it.
|
|
59
|
+
|
|
60
|
+
### 2. What is the purpose?
|
|
61
|
+
|
|
62
|
+
Name it in one word before continuing: **feedback**, **spatial consistency**, **state indication**, **preventing a jarring change**, **explanation**, or **delight** (rare tier only).
|
|
63
|
+
|
|
64
|
+
Can't name it? Don't build it.
|
|
65
|
+
|
|
66
|
+
### 3. Pick the tool — cheapest that works
|
|
67
|
+
|
|
68
|
+
Walk down; stop at the first that fits.
|
|
69
|
+
|
|
70
|
+
| Need | Tool |
|
|
71
|
+
| --- | --- |
|
|
72
|
+
| A state-driven change with no gesture — press, toggle, color, a value flipping | **Reanimated CSS transition** (`transitionProperty` in the style) |
|
|
73
|
+
| Loop, multi-stage, or plays on mount with no state change | **Reanimated CSS animation** (`animationName` keyframes) |
|
|
74
|
+
| An element mounting or unmounting, or a list reflowing | **Layout animations** (`entering` / `exiting` / `itemLayoutAnimation`) |
|
|
75
|
+
| Anything a finger touches, or anything derived from scroll | **`useSharedValue` + `Gesture` + `useAnimatedStyle`** |
|
|
76
|
+
| Screen to screen | **Native stack options in Expo Router.** Never hand-roll this |
|
|
77
|
+
| A bottom sheet that is its own screen | **`presentation: 'formSheet'`** — it's a real UISheetPresentationController, free and correct |
|
|
78
|
+
| Tab bar | **`NativeTabs`** (from `expo-router/unstable-native-tabs`) — the platform's real tab bar, its behaviors and transitions included |
|
|
79
|
+
| Context menu, press-and-hold preview | **`Link.Menu` / `Link.Preview`** (Expo Router, iOS-only) — native menus and peek, never rebuilt in JS |
|
|
80
|
+
| Header that collapses into a large title | **`headerLargeTitleEnabled`** on the native stack (iOS-only; `headerLargeTitle` is deprecated) — not a scroll worklet |
|
|
81
|
+
| Pull to refresh | **`RefreshControl`** — hand-roll only when it's a signature interaction (see the threshold recipe) |
|
|
82
|
+
| UI that tracks the keyboard | **`react-native-keyboard-controller`** — the keyboard's real position, frame by frame, on the UI thread |
|
|
83
|
+
| Vector illustration, celebration, empty state | **Lottie** — for illustration only, never for UI state |
|
|
84
|
+
| A huge animated scene, freeform drawing | **`@shopify/react-native-skia`** — a canvas, for when the view hierarchy itself is the bottleneck |
|
|
85
|
+
|
|
86
|
+
Reach for a shared value only when the value is continuous or interruptible. A press scale is a CSS transition; a drag is a shared value. Using a worklet for a two-state toggle is the mobile equivalent of installing a motion library for a fade.
|
|
87
|
+
|
|
88
|
+
**Dependencies.** Install with `npx expo install <package>` — it resolves the version that matches the project's SDK, which plain `npm install` won't:
|
|
89
|
+
|
|
90
|
+
| Need | Package |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| Animation | `react-native-reanimated` + `react-native-worklets` |
|
|
93
|
+
| Gestures | `react-native-gesture-handler` |
|
|
94
|
+
| Navigation, sheets, native tabs, menus | `expo-router` |
|
|
95
|
+
| Haptics | `expo-haptics` |
|
|
96
|
+
| Keyboard-following UI | `react-native-keyboard-controller` (needs `KeyboardProvider` at the root — see the keyboard recipe) |
|
|
97
|
+
| Illustration, celebration | `lottie-react-native` |
|
|
98
|
+
| Very large animated scenes, custom drawing | `@shopify/react-native-skia` |
|
|
99
|
+
|
|
100
|
+
### 4. Pick the properties
|
|
101
|
+
|
|
102
|
+
- **`transform` and `opacity` are free.** Everything else is a layout pass. `width`, `height`, `margin`, `padding`, `flex`, `top`, `left`, `gap` re-run Yoga on every frame for that node *and its siblings*.
|
|
103
|
+
- **The one exception: an absolutely positioned element with no children** — a tab pill, a progress bar fill. It's out of flow, so nothing else re-lays-out, and animating `width` keeps the corner radius that `scaleX` would smear.
|
|
104
|
+
- **Never `scale(0)`.** Start from `scale(0.9–0.97)` + `opacity: 0`. Nothing in the real world appears from nothing.
|
|
105
|
+
- **`transform` is an array and order matters** — `[{ translateY }, { scale }]` scales after moving; reversed, the translate gets scaled too. Keep translate first unless you want the multiplication.
|
|
106
|
+
- **Android shadows are `elevation`, and animating elevation re-renders the shadow every frame.** Animate opacity of a pre-shadowed layer instead.
|
|
107
|
+
- **Never animate `BlurView` intensity.** On Android it re-renders the blur each frame. Crossfade the opacity of a static `BlurView` instead.
|
|
108
|
+
- **Percentages work in `translate`** and are relative to the element's own size — `translateY('100%')` moves a sheet by its own height whatever its content.
|
|
109
|
+
|
|
110
|
+
### 5. Timing or spring
|
|
111
|
+
|
|
112
|
+
**If a finger was involved, use a spring.** Springs carry velocity through an interruption; timing curves restart. Everything else uses timing.
|
|
113
|
+
|
|
114
|
+
Reanimated's spring takes Apple's two designer parameters directly — use this form, not mass/stiffness/damping:
|
|
115
|
+
|
|
116
|
+
| Interaction | Config |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| Default settle, no overshoot | `{ duration: 400, dampingRatio: 1 }` |
|
|
119
|
+
| Reposition / snap back after a drag | `{ duration: 400, dampingRatio: 0.8, velocity }` |
|
|
120
|
+
| Sheet, drawer | `{ duration: 300, dampingRatio: 0.8, velocity }` |
|
|
121
|
+
| Must not pass a hard edge | add `overshootClamping: true` |
|
|
122
|
+
|
|
123
|
+
**Bounce only when the gesture carried momentum.** Overshoot on a menu that faded in feels wrong; overshoot on a card you flicked feels right.
|
|
124
|
+
|
|
125
|
+
**Easing**, for everything without a finger on it:
|
|
126
|
+
|
|
127
|
+
| Situation | Easing |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| Entering or exiting | `ease-out` |
|
|
130
|
+
| Moving / morphing on screen | `ease-in-out` |
|
|
131
|
+
| Constant motion (progress, marquee) | `linear` |
|
|
132
|
+
| Default | `ease-out` |
|
|
133
|
+
|
|
134
|
+
**Never `ease-in` on UI.** It starts slow, delaying the exact moment the user is watching. Reanimated's built-ins are as weak as CSS's — use these:
|
|
135
|
+
|
|
136
|
+
```js
|
|
137
|
+
import { cubicBezier, Easing } from 'react-native-reanimated';
|
|
138
|
+
|
|
139
|
+
// transitionTimingFunction / animationTimingFunction
|
|
140
|
+
const CSS_EASE_OUT = cubicBezier(0.23, 1, 0.32, 1);
|
|
141
|
+
|
|
142
|
+
// withTiming / .easing(...)
|
|
143
|
+
const EASE_OUT = Easing.bezier(0.23, 1, 0.32, 1); // strong ease-out for UI
|
|
144
|
+
const EASE_IN_OUT = Easing.bezier(0.77, 0, 0.175, 1); // on-screen movement
|
|
145
|
+
const EASE_SHEET = Easing.bezier(0.32, 0.72, 0, 1); // iOS sheet curve
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Reanimated 4.1.1 and 4.5.1 reject raw `'cubic-bezier(...)'` strings. CSS transitions and animations use `cubicBezier(...)`; `withTiming` and `.easing(...)` use `Easing.bezier(...)`.
|
|
149
|
+
|
|
150
|
+
**Duration:**
|
|
151
|
+
|
|
152
|
+
| Element | Duration |
|
|
153
|
+
| --- | --- |
|
|
154
|
+
| Press feedback | 100–150ms |
|
|
155
|
+
| Toggle, chip, small state change | 150–200ms |
|
|
156
|
+
| Sheet, modal, drawer | spring, ~300ms perceived |
|
|
157
|
+
| Screen transition | the platform default — don't override it |
|
|
158
|
+
|
|
159
|
+
Mobile UI animations stay under 300ms, same as web. The platform's own transitions are longer (iOS push is 350ms); match the platform for navigation, beat it everywhere else.
|
|
160
|
+
|
|
161
|
+
### 6. Keep it off the JS thread
|
|
162
|
+
|
|
163
|
+
This is the mobile-specific craft, and it's where most React Native motion dies.
|
|
164
|
+
|
|
165
|
+
- **Never `setState` from a gesture or scroll handler.** One React render per frame is the single biggest cause of jank in RN apps. Shared value → `useAnimatedStyle`, and React never re-renders at all.
|
|
166
|
+
- **Never schedule back to the RN runtime inside `onUpdate` or a scroll handler.** `scheduleOnRN(fn, ...args)` from `react-native-worklets` — the Reanimated 4 replacement for the deprecated `runOnJS(fn)(...args)` — queues an RN-runtime call, and in `onUpdate` that's 60–120× per second. It belongs in `onEnd`, or in a `useAnimatedReaction` that fires when a value crosses a threshold.
|
|
167
|
+
- **Never read a shared value during render** (`translateY.get()` in JSX). It's a snapshot that never updates and it silently desyncs. **Never write one during render either** — it fires mid-reconciliation, and a re-render you didn't cause replays the write. Touch shared values only in worklets, handlers, and effects.
|
|
168
|
+
- **Use `.get()` / `.set()`, not `.value`.** Same API, but direct `.value` access is the form the React Compiler can't see through — the Reanimated docs call `get`/`set` the compiler-safe way. `set` also takes a functional update: `sv.set((v) => v + 1)`.
|
|
169
|
+
- **Functions called from a worklet need `'worklet'`** as their first line, or they throw at runtime on device while working fine in the debugger.
|
|
170
|
+
|
|
171
|
+
### 7. Press, not hover
|
|
172
|
+
|
|
173
|
+
Every hover affordance from the web has to be redesigned, not ported.
|
|
174
|
+
|
|
175
|
+
- **Feedback on press-in, commit on press-out.** Waiting for the tap to complete before showing anything feels dead — this is the latency the user actually perceives.
|
|
176
|
+
- **`scale: 0.97` in 100–150ms** on any button-like pressable, `Pressable` + a CSS transition. `scale` takes the label and icons with it, which is what makes it read as physical. Full-width list rows are the exception: they highlight their background instead — a scaling row reads as the whole screen squishing.
|
|
177
|
+
- **44×44pt minimum touch target** (48dp Android). If the visual is smaller, add `hitSlop` — don't grow the visual.
|
|
178
|
+
- **`pressRetentionOffset`** so a finger drifting a few pixels doesn't cancel a press the user meant.
|
|
179
|
+
- **Android ripple only in a Material-styled app.** In a custom-designed app, the same scale on both platforms is more coherent than a ripple on one.
|
|
180
|
+
|
|
181
|
+
### 8. Haptics
|
|
182
|
+
|
|
183
|
+
Mobile has a sense the web doesn't. Use it sparingly and it becomes the thing that makes the app feel expensive; use it everywhere and users turn it off.
|
|
184
|
+
|
|
185
|
+
| Moment | Call |
|
|
186
|
+
| --- | --- |
|
|
187
|
+
| A value ticks past a step — picker, slider detent, segmented control | `Haptics.selectionAsync()` |
|
|
188
|
+
| Something snaps home, a sheet detent catches, a drag commits | `Haptics.impactAsync(ImpactFeedbackStyle.Light)` |
|
|
189
|
+
| A heavy object lands, a destructive action fires | `Haptics.impactAsync(ImpactFeedbackStyle.Medium)` |
|
|
190
|
+
| Operation succeeded or failed | `Haptics.notificationAsync(NotificationFeedbackType.Success / Error)` |
|
|
191
|
+
|
|
192
|
+
Three rules, and they're absolute:
|
|
193
|
+
|
|
194
|
+
- **Same frame as the visual.** A haptic that lags its animation reads as a glitch, not as feedback. Fire it at the causal moment — the detent catching — not when the animation finishes.
|
|
195
|
+
- **One per user action.** Never on scroll, never per frame, never on an entrance animation the user didn't cause.
|
|
196
|
+
- **Never the only feedback.** Haptics are off system-wide for many users, and silent on most Android hardware. The visual has to stand alone.
|
|
197
|
+
|
|
198
|
+
From a worklet, haptics must be scheduled back to the RN runtime: `scheduleOnRN(Haptics.selectionAsync)`.
|
|
199
|
+
|
|
200
|
+
### 9. Reduced motion and accessibility
|
|
201
|
+
|
|
202
|
+
```jsx
|
|
203
|
+
import { useReducedMotion, ReduceMotion, withSpring } from 'react-native-reanimated';
|
|
204
|
+
|
|
205
|
+
const reduced = useReducedMotion();
|
|
206
|
+
const y = useSharedValue(reduced ? 0 : SHEET_HEIGHT);
|
|
207
|
+
|
|
208
|
+
// or let each animation decide
|
|
209
|
+
withSpring(0, { duration: 300, dampingRatio: 0.8, reduceMotion: ReduceMotion.System });
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Reduced motion means **fewer and gentler**, not zero: keep opacity and color changes that explain a state change, drop translation, scale, parallax and overshoot. Screen transitions become `animation: 'fade'`.
|
|
213
|
+
|
|
214
|
+
**Text scales.** `allowFontScaling` is on by default, so any height you measured at default type size is wrong at 200%. Never animate to a hardcoded height — measure with `onLayout`, or animate a transform instead.
|
|
215
|
+
|
|
216
|
+
## Setup that silently breaks motion
|
|
217
|
+
|
|
218
|
+
Check these first when "the animation just doesn't run":
|
|
219
|
+
|
|
220
|
+
- Install through Expo so versions match the SDK: `npx expo install react-native-reanimated react-native-worklets`. In an Expo project, `babel-preset-expo` configures the worklets Babel plugin automatically — no `babel.config.js` step. Only a bare RN project without that preset adds the plugin manually, and there it must be last in the list. A missing or misplaced plugin doesn't silently fall back anymore — it throws `Failed to create a worklet` at runtime.
|
|
221
|
+
- `GestureHandlerRootView` must wrap the app, or gestures do nothing with no error.
|
|
222
|
+
- Reanimated 4 requires the New Architecture.
|
|
223
|
+
- **Expo Go is not a performance environment.** Judge feel in a release build; a dev build's JS thread is slow enough to hide exactly the problems you're looking for.
|
|
224
|
+
|
|
225
|
+
## 120fps
|
|
226
|
+
|
|
227
|
+
On ProMotion iPhones, third-party animations are capped at 60fps unless `CADisableMinimumFrameDurationOnPhone` is set. Recent Expo SDKs set it by default — confirm it's there, and add it if not:
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{ "expo": { "ios": { "infoPlist": { "CADisableMinimumFrameDurationOnPhone": true } } } }
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Then the frame budget is 8ms, not 16. This is also why a UI-thread animation matters more on mobile than it does on web.
|
|
234
|
+
|
|
235
|
+
## Recipes
|
|
236
|
+
|
|
237
|
+
For ready-to-build implementations — press feedback, drag-to-dismiss sheet, swipe-to-delete, collapsing header, list entrances, keyboard-synced UI, tab indicator, screen transitions — see [RECIPES.md. Load it whenever the request matches one; start from the recipe rather than from a blank file.
|
|
238
|
+
|
|
239
|
+
## Never Ship
|
|
240
|
+
|
|
241
|
+
| Never | Instead |
|
|
242
|
+
| --- | --- |
|
|
243
|
+
| `PanResponder` | `Gesture.Pan()` from gesture-handler |
|
|
244
|
+
| `setState` in a gesture or scroll handler | shared value + `useAnimatedStyle` |
|
|
245
|
+
| `runOnJS` (deprecated in Reanimated 4) | `scheduleOnRN` from `react-native-worklets` |
|
|
246
|
+
| `scheduleOnRN` per frame | `onEnd`, or `useAnimatedReaction` at a threshold |
|
|
247
|
+
| Reading or writing a shared value during render | `.get()` / `.set()` in worklets, handlers, effects |
|
|
248
|
+
| Core `Animated` for anything a finger touches | Reanimated |
|
|
249
|
+
| Animating `height` / `width` / `margin` / `flex` / `top` | `transform` + `opacity` (absolute, childless elements exempt) |
|
|
250
|
+
| Animating `BlurView` intensity or Android `elevation` | crossfade a static layer |
|
|
251
|
+
| `entering` on a virtualized list row | animate the container, or `itemLayoutAnimation` |
|
|
252
|
+
| A screen transition rebuilt in JS | native stack `animation` |
|
|
253
|
+
| Sliding between tabs | `animation: 'none'` |
|
|
254
|
+
| `Easing.in(...)` on a UI element | `Easing.bezier(0.23, 1, 0.32, 1)` |
|
|
255
|
+
| `'cubic-bezier(...)'` in a Reanimated CSS style | `cubicBezier(...)` from `react-native-reanimated` |
|
|
256
|
+
| `scale(0)` entrance | `scale(0.95)` + `opacity: 0` |
|
|
257
|
+
| Distance-only dismissal threshold | velocity **or** distance — a flick is enough |
|
|
258
|
+
| Hard stop at a boundary | rubber-band resistance |
|
|
259
|
+
| A haptic per frame, or as the only feedback | one per commit, always paired with a visual |
|
|
260
|
+
| Judging feel in Expo Go or the simulator | release build, slowest supported device |
|
|
261
|
+
|
|
262
|
+
## Output
|
|
263
|
+
|
|
264
|
+
Write the code. Then, in at most a few lines:
|
|
265
|
+
|
|
266
|
+
- **The gate result** — frequency tier and named purpose. Say what you rejected and why.
|
|
267
|
+
- **The ingredients** — tool, properties, spring or curve + duration, thread.
|
|
268
|
+
- **What to feel-check on device** — gestures, velocity handoff and haptic timing cannot be judged from code. Name what to try: flick it, interrupt it mid-flight, reverse it, run it on the slowest Android you have.
|
|
269
|
+
|
|
270
|
+
The code is the deliverable. Don't pad it into a report.
|
|
271
|
+
|
|
272
|
+
## Tone
|
|
273
|
+
|
|
274
|
+
Opinionated and brief. When the honest answer is "this shouldn't animate," or "this needs a real device before I can tell you if it's right," give it.
|
|
275
|
+
|
|
276
|
+
## Submitting Feedback
|
|
277
|
+
If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:
|
|
278
|
+
```bash
|
|
279
|
+
npx --yes submit-expo-feedback@latest --category skills --subject "expo-animation" "<actionable feedback>"
|
|
280
|
+
```
|
|
281
|
+
Only submit when you have something specific and actionable to report. Include as much relevant context as possible.
|
|
282
|
+
If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
## Examples
|
|
286
|
+
|
|
287
|
+
```text
|
|
288
|
+
User: Apply this skill to my current task.
|
|
289
|
+
Assistant: Follow the workflow in this skill, cite limitations, and ask before risky steps.
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Limitations
|
|
293
|
+
|
|
294
|
+
- Imported upstream skill; verify credentials, permissions, and safety boundaries before execution.
|
|
295
|
+
- Does not replace environment-specific validation, testing, or maintainer review.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fact-check-x-unified
|
|
3
|
+
description: Fact-Check-X 流程编排能力,依次组织各方答案汇总、各方答案聚合(未核验)、权威核验后的最终答案和各方答案测评,生成可打开、可审计、可迁移的阶段产物与完整报告包。
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
source_repo: asi2030/fact-check-x
|
|
6
|
+
source_type: official
|
|
7
|
+
source: asi2030
|
|
8
|
+
date_added: '2026-09-21'
|
|
9
|
+
risk: unknown
|
|
10
|
+
---
|
|
11
|
+
## When to Use
|
|
12
|
+
- Use when this upstream workflow matches the user's stated goal.
|
|
13
|
+
- Use when the task requires the procedures documented in this skill.
|
|
14
|
+
|
|
15
|
+
# Fact-Check-X 统一入口
|
|
16
|
+
|
|
17
|
+
本技能只做编排,不内嵌三个业务层。它按以下顺序调用兄弟技能:
|
|
18
|
+
|
|
19
|
+
1. `llm-answer-reference-compare`:多平台回答、引用与现场存证采集。
|
|
20
|
+
2. `fact-check-x-knowledge-compare`:本地知识点结构化对比,可选。
|
|
21
|
+
3. `fact-check-x-authoritative-verify`:逐知识点并发权威核验与平台表现报告。
|
|
22
|
+
|
|
23
|
+
所有语义拆解和证据裁决由当前承载技能的智能体完成。脚本不调用任何模型 API。
|
|
24
|
+
|
|
25
|
+
## 依赖定位
|
|
26
|
+
|
|
27
|
+
四个技能放在同一目录时可直接运行。也可设置:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
export FACTCHECK_SKILLS_DIR="<四个技能的父目录>"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
检查依赖:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
python3 scripts/fact_check_x.py locate
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 完整流程
|
|
40
|
+
|
|
41
|
+
先采集 `results.json`,然后准备知识点对比:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
python3 scripts/fact_check_x.py prepare-comparison \
|
|
45
|
+
--results <results.json> \
|
|
46
|
+
--run-dir <run>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
命令会同步生成“各方答案汇总”,在运行目录顶层生成 `01-capture-report.html`。每个 `deliverables` 条目同时返回已验证存在的本机 `path`、标准 `fileUri` 和可直接展示的 `markdownLink`。调用方必须原样展示 `markdownLink`,不得自行拼接 Windows 路径或把 `path` 直接塞进 Markdown;产物不存在时命令会在当前阶段失败。
|
|
50
|
+
|
|
51
|
+
默认交互模式下,程序会把阶段状态写入 `stage-checkpoints.json`。调用方发送本阶段产物并收到用户“继续下一步”后,必须使用 `checkpoint.acknowledgement.token` 执行:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python3 scripts/fact_check_x.py acknowledge-stage \
|
|
55
|
+
--run-dir <run> --stage <checkpoint.stage> \
|
|
56
|
+
--token <checkpoint.acknowledgement.token> --decision continue
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
未确认时,下一阶段命令会直接失败。即使用户最初要求完整连续执行,也必须依次展示每个阶段产物并取得确认;不存在可绕过确认的自动推进模式。
|
|
60
|
+
|
|
61
|
+
当前智能体读取 `<run>/comparison-task.json`,写入 `<run>/comparison-analysis.json`,再执行:
|
|
62
|
+
|
|
63
|
+
`comparison-task.json` 是自包含的紧凑工作集。阶段确认后只允许“读取任务包一次、写入分析一次、执行验收一次”,最多三次工具调用;不得读取技能源码、契约或完整 `results.json` 探路,不得打印或转储完整任务包。`capturedText` 只是有界原文预览,完整正文由程序在验收时从 `results.json` 校验和重建。
|
|
64
|
+
|
|
65
|
+
拆解时,原子性同时约束知识点和各平台 `claim`。一个原句包含多个独立义务、条件、对象、数值或后果时必须拆点,每个 `claim` 只保留当前事实;平台独有的实质新增事实也要另起无锚点知识点,不能并入宽泛知识点后复用深知晓锚点免查。每个知识点同时标明 `claimType=fact|recommendation`:纯操作建议可标为 `recommendation`,不因缺少逐句脚标而判引用不忠实;建议中包含的制度事实、条件、数字或时效必须拆成独立 `fact`。
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python3 scripts/fact_check_x.py complete-comparison \
|
|
69
|
+
--results <results.json> \
|
|
70
|
+
--run-dir <run>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
命令会在运行目录顶层生成 `02-comparison-report.html`,并通过 `deliverables[].markdownLink` 返回可点击链接;调用方必须原样展示。报告必须包含明确标为“未核验”的综合草案。默认交互模式下,用户确认继续后才能进入权威核验。
|
|
74
|
+
|
|
75
|
+
生成每个知识点的独立云端请求并并发取证:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
python3 scripts/fact_check_x.py prepare-authority --run-dir <run>
|
|
79
|
+
python3 scripts/fact_check_x.py search-authority --run-dir <run> --max-workers 12
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
深知晓采集同时保留回答内逐句脚标和“知识专库”中的回答级来源;相同 URL 合并为 `inline_and_global`。回答级来源只有经当前知识点逐条语义匹配且原文可定位时才可支持该事实,不得整库继承。知识点已有深知晓/深知晓(深度溯源)本次回答所附的官方材料,或其他平台本次回答所附的 `gov.cn` 材料,且原文确实支持当前事实主张时,直接复用为官方证据,不调用可信搜索。纯操作建议同样不调用可信搜索;除此之外,已有材料不足以裁决的事实知识点才是非免查知识点。
|
|
83
|
+
|
|
84
|
+
若存在非免查知识点但本机尚无可信搜索配置,`prepare-authority` 和 `search-authority` 会返回 `status=configuration_required`、`userPrompt` 与 `configuration.command` 并以非零状态退出。调用方先展示登录提示,再前台执行该命令。用户只需在自动打开的深知 MaaS 页面完成登录;组件会自动复用已有完整 Key,没有时创建 `Fact-Check-X` 专用 Key,验证后保存到 `~/.fact-check-x/credentials/trusted-search-key`。Codex、Claude Code、WorkBuddy 等载体共享该配置,检测到已有 Key 时直接跳过登录。配置成功后调用方自动重跑 `prepare-authority`,不得要求用户复制 Key、编辑 shell 配置、回复“已配置”,也不得改用深知晓来源或普通搜索绕过。
|
|
85
|
+
|
|
86
|
+
只有可信搜索返回 401/403 时才把现有 Key 视为失效并进入自动配置。超时、断网或服务异常保留现有配置并自动重试;重试后仍失败则停留在搜索阶段返回技术错误,不要求用户重新登录,也不转成人工事实复核。
|
|
87
|
+
|
|
88
|
+
`prepare-authority` 会写入 `authority-gate.json`。只有可信搜索批次正常完成、门禁状态变为 `searched` 后,`finalize-authority` 才允许运行;手工写 evidence 或 result 不能绕过。
|
|
89
|
+
|
|
90
|
+
当前智能体逐个读取 `authority/requests` 与 `authority/evidence`,把裁决写入 `authority/assessments/<知识点ID>.json`,然后:
|
|
91
|
+
|
|
92
|
+
免查模式下,`trustedAnchor.officialAnswer` 是当前事实知识点的权威结论;锚点证据列表用于来源追溯。无论来自深知晓还是 `gov.cn`,都必须确认已捕获正文实际支持该结论,不得仅凭官方属性自动判定。`trustedAnchor.claimEvidenceMap` 记录各平台已经逐主张绑定的官方原文;命中该映射的平台直接复用本次回答自带证据,不得因另一轮可信搜索未召回同一材料而降为证据不足。其他平台主张与 `officialAnswer` 语义一致或可由其直接推出时,裁决为 `supported` 并引用有效锚点证据 ID。仅当平台主张增加了权威结论不能支持的实质事实,或确实无法判定时,才使用 `insufficient`。知识点对比阶段的引用忠实性与本阶段的事实正确性分别保留,不能因平台自身引用不足而拒绝判断已经被权威结论证实的主张。`recommendation` 作为“操作建议”单独展示,不进入事实准确率或幻觉率;若权威证据证明建议会误导,仍可判为 `contradicted`。
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"authoritativeFinding": "由权威证据支持的知识点结论",
|
|
97
|
+
"verdicts": {
|
|
98
|
+
"<平台ID>": {
|
|
99
|
+
"verdict": "supported",
|
|
100
|
+
"reason": "主张与 E1 一致",
|
|
101
|
+
"evidenceIds": ["E1"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`verdict` 只能使用 `supported`、`contradicted` 或 `insufficient`,证据 ID 必须存在于当前 evidence 文件中。旧式顶层 `verdict`、`officialAnswer`、`platformAssessment` 会被拒绝。
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
python3 scripts/fact_check_x.py finalize-authority --run-dir <run>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
第三步完成后如需修正 assessment,禁止手工清空结果或修改 gate。先执行 `python3 scripts/fact_check_x.py reopen-authority --run-dir <run> --reason "<原因>"`;程序校验锁定摘要并归档旧裁决后回退到 `searched`,再修改 assessment、重新 `finalize-authority` 并重新确认第三步产物。
|
|
114
|
+
|
|
115
|
+
`finalize-authority` 生成“权威核验后的最终答案”,只将证据充分的直接知识点纳入 `finalAnswer`,将补充参考单独写入 `supplementalFindings`,将证据不足项写入 `evidenceGaps`。第三步只展示直接答案、证据边界和简洁来源索引;逐知识点裁决与评分只在第四步展示。
|
|
116
|
+
|
|
117
|
+
`finalize-authority` 完成裁决后会独立生成 `03-authority-report.html`,并通过
|
|
118
|
+
`deliverables` 返回已验证的路径、文件 URI 和 `markdownLink`。调用方必须原样展示 `markdownLink`;默认交互模式下,
|
|
119
|
+
只有状态为 `completed` 且用户确认继续后才执行:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
python3 scripts/fact_check_x.py deliver --results <results.json> --run-dir <run>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
可信搜索返回 `no_evidence` 时记录为 `insufficient_evidence`:空结果只表示本次没有取得可裁决材料,不能直接判成“编造”;证据边界记录完成后继续生成后续报告。
|
|
126
|
+
|
|
127
|
+
`deliver` 必须在运行目录顶层生成并返回四份独立可读报告:
|
|
128
|
+
|
|
129
|
+
- `01-capture-report.html`:各方答案汇总;
|
|
130
|
+
- `02-comparison-report.html`:各方答案聚合(未核验);
|
|
131
|
+
- `03-authority-report.html`:权威核验后的最终答案、权威证据和证据边界;
|
|
132
|
+
- `04-final-report.html`:各方答案测评报告。
|
|
133
|
+
|
|
134
|
+
`deliver` 只能读取第三步已锁定的 `verification.json` 和 `03-authority-report.html`;任一文件摘要变化都必须拒绝,不得重算或重写第三步。
|
|
135
|
+
|
|
136
|
+
缺少任一报告都不得生成或交付 `05-complete-report-package.zip`。
|
|
137
|
+
|
|
138
|
+
最终保留:
|
|
139
|
+
|
|
140
|
+
- `capture/results.json`、`capture/report.html`、`capture/report.md`;
|
|
141
|
+
- `comparison-task.json`、`comparison-analysis.json`、`comparison.json`、`comparison.html`;
|
|
142
|
+
- 每个知识点独立的 request、evidence、assessment、result;
|
|
143
|
+
- `authority/batch.json`、`verification.json`、`report.html`、`pipeline.json`;
|
|
144
|
+
- 四份阶段报告和 `05-complete-report-package.zip`。
|
|
145
|
+
|
|
146
|
+
## 跳过知识点对比
|
|
147
|
+
|
|
148
|
+
知识点对比是可选能力。已有结构化知识点时,可按权威证据核验模块的数据契约直接建立单知识点请求,独立调用 `fact-check-x-authoritative-verify`。统一入口不会强迫用户先采集多个 AI 回答。
|
|
149
|
+
|
|
150
|
+
## 执行边界
|
|
151
|
+
|
|
152
|
+
- 原始答案阶段只采集,不核验;可用可信搜索全文参数补全平台已给出的同一来源正文,但不得新增或替换引用。
|
|
153
|
+
- 知识点对比只比较原答案与所附来源,不联网找真相。
|
|
154
|
+
- 云端层只接收当前知识点;各家主张相同则不上传主张,不同才上传差异。
|
|
155
|
+
- 深知晓已有合格官方锚点时不重复搜索。
|
|
156
|
+
- 最终报告必须使用权威证据核验模块内的稳定报告渲染器。
|
|
157
|
+
|
|
158
|
+
## 交付门禁
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
python3 tests/smoke_test.py
|
|
162
|
+
python3 "${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator/scripts/quick_validate.py" .
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
完整标准见 [验收标准]。
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
## Examples
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
User: Apply this skill to my current task.
|
|
172
|
+
Assistant: Follow the workflow in this skill, cite limitations, and ask before risky steps.
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Limitations
|
|
176
|
+
|
|
177
|
+
- Imported upstream skill; verify credentials, permissions, and safety boundaries before execution.
|
|
178
|
+
- Does not replace environment-specific validation, testing, or maintainer review.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# 验收标准
|
|
2
|
+
|
|
3
|
+
## 架构
|
|
4
|
+
|
|
5
|
+
- 对外入口是轻量编排 Skill,不复制 1.0、1.1、可信搜索或报告实现。
|
|
6
|
+
- 原始答案采集、知识点对比、权威证据核验均可独立安装和独立调用。
|
|
7
|
+
- 四个 Skill 全部使用中文说明和中文交互提示。
|
|
8
|
+
- 语义分析使用当前承载技能的智能体,代码中没有模型 API 客户端、模型名称、模型密钥或模型路由。
|
|
9
|
+
|
|
10
|
+
## 1.0
|
|
11
|
+
|
|
12
|
+
- 完整回答、原始引用列表、引用标记、原始 URL 和现场存证无损保留。
|
|
13
|
+
- 原 URL 不被标题搜索或其他 URL 替换。
|
|
14
|
+
- 失败状态显式保留。
|
|
15
|
+
- 回答停止生成前不得落盘;自动重采仍失败时输出 Computer Use 恢复请求。
|
|
16
|
+
- 任一平台失败、回答为空、内容仍是登录/地区提示或恢复状态为 `required` 时,`capture-gate.json` 必须阻止所有下游步骤。
|
|
17
|
+
|
|
18
|
+
## 1.1
|
|
19
|
+
|
|
20
|
+
- 形成所有平台知识点并集,区分直接答案与补充参考。
|
|
21
|
+
- 精确呈现相同、不同、各自主张、所附依据与来源忠实性。
|
|
22
|
+
- 有显式标记只用标记来源;无标记才检查该平台全部原始来源。
|
|
23
|
+
- 不调用可信搜索或网络搜索。
|
|
24
|
+
- 中间报告按实际平台数动态展示全部原答案与知识点;默认 2 家,`N=1` 展示单平台结构化核验,`N≥2` 增加跨平台对比,不得截断第三家及后续平台。
|
|
25
|
+
|
|
26
|
+
## 权威核验
|
|
27
|
+
|
|
28
|
+
- 每个知识点形成一个独立请求,多个请求并发执行。
|
|
29
|
+
- 云端用户内容只有总标题、当前知识点和必要的差异主张。
|
|
30
|
+
- 主张相同不上传主张;不同才上传差异。
|
|
31
|
+
- 深知晓已附官方材料,或其他平台已附 `gov.cn` 材料,且正文实际支持当前主张时免查,实际请求数为 0。
|
|
32
|
+
- 非深知晓、非 `gov.cn` 或已有材料不足以裁决的知识点,每点只进行一次可信搜索,所有平台共用证据。
|
|
33
|
+
- `dknowExemptCount`、`govExemptCount` 和 `officialExemptCount` 必须与比较结果一致。
|
|
34
|
+
- 分类符合直接准确、间接准确、结果巧合、严重误导、凭空编造、证据不足、未覆盖的最终口径。
|
|
35
|
+
- 官方前提的一步显然算术推导可判直接准确。
|
|
36
|
+
|
|
37
|
+
## 最终交付
|
|
38
|
+
|
|
39
|
+
- 独立交付原始答案、参考文献、引用标记、原始 URL 与现场存证报告,不依赖最终报告的折叠章节才能查看。
|
|
40
|
+
- `pipeline.json` 明确登记 `capture/results.json`、`capture/report.html` 和 `capture/report.md`。
|
|
41
|
+
- 最终报告使用统一渲染器,保留参考性、逐条判定、补充参考、关键发现、原始存证、指标口径和元信息章节。
|
|
42
|
+
- 同一组 JSON 中间产物可离线重现相同类别、指标和报告结构。
|
|
43
|
+
- 套件与四个独立 zip 可解压运行,不包含浏览器登录目录、历史运行数据或密钥。
|
|
44
|
+
- 四个冒烟测试、技能结构校验、禁止模型 API 扫描和打包清单校验全部通过。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 编排契约
|
|
2
|
+
|
|
3
|
+
统一入口不发明新的业务判断,只连接三个稳定契约:
|
|
4
|
+
|
|
5
|
+
- 1.0:`schemaVersion=1` 的 `results.json`。
|
|
6
|
+
- 1.1:`fact-check-x/comparison@1`。
|
|
7
|
+
- 单点权威请求:`fact-check-x/authority-request@1`。
|
|
8
|
+
- 单点权威结果:`fact-check-x/authority-result@1`。
|
|
9
|
+
- 汇总:`fact-check-x/verification@2`。
|
|
10
|
+
- 流水线:`fact-check-x/pipeline@2`。
|
|
11
|
+
|
|
12
|
+
`comparison-gate.json` 锁定 1.0 结果、智能体分析和归一化 comparison 的 SHA-256。`authority-gate.json` 锁定 request、evidence、assessment、result 的精确 ID 集合与 SHA-256;任何缺失、额外、陈旧或后改文件都必须阻断后续步骤。
|
|
13
|
+
|
|
14
|
+
`verification.json`:
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"schemaVersion": "fact-check-x/verification@2",
|
|
19
|
+
"question": "用户问题",
|
|
20
|
+
"finalAnswer": {
|
|
21
|
+
"status": "verified",
|
|
22
|
+
"answer": "按知识点顺序合并的权威核验答案",
|
|
23
|
+
"knowledgePointIds": ["K1"]
|
|
24
|
+
},
|
|
25
|
+
"platforms": [{"platform": "dknowc-chat", "label": "深知晓"}],
|
|
26
|
+
"knowledgePoints": [
|
|
27
|
+
{
|
|
28
|
+
"id": "K1",
|
|
29
|
+
"description": "原子事实",
|
|
30
|
+
"claims": {},
|
|
31
|
+
"authority": {"schemaVersion": "fact-check-x/authority-result@1"}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"trustedSearchRequestCount": 0,
|
|
35
|
+
"status": "completed"
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`pipeline.json` 记录每层技能名称、产物绝对路径、知识点数、实际可信搜索请求数、深知晓官方材料免查数、`gov.cn` 材料免查数、官方材料免查总数和最终状态。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import os
|
|
6
|
+
import tempfile
|
|
7
|
+
from datetime import datetime, timezone
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class PipelineError(RuntimeError):
|
|
13
|
+
pass
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def load_json(path: str | Path) -> Any:
|
|
17
|
+
return json.loads(Path(path).read_text(encoding="utf-8"))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def dump_json(path: str | Path, value: Any) -> None:
|
|
21
|
+
target = Path(path)
|
|
22
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
23
|
+
with tempfile.NamedTemporaryFile("w", encoding="utf-8", dir=target.parent, delete=False) as handle:
|
|
24
|
+
json.dump(value, handle, ensure_ascii=False, indent=2)
|
|
25
|
+
handle.write("\n")
|
|
26
|
+
temporary = handle.name
|
|
27
|
+
os.replace(temporary, target)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def now_iso() -> str:
|
|
31
|
+
return datetime.now(timezone.utc).astimezone().isoformat(timespec="seconds")
|