skillgate 1.1.0__tar.gz
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.
- skillgate-1.1.0/.codex/skills/local-ci-gate-pack/SKILL.md +43 -0
- skillgate-1.1.0/.codex/skills/production-hardening-gate/SKILL.md +141 -0
- skillgate-1.1.0/.env.example +442 -0
- skillgate-1.1.0/.github/workflows/ci-matrix.yml +111 -0
- skillgate-1.1.0/.github/workflows/ci.full.backup.yml +161 -0
- skillgate-1.1.0/.github/workflows/ci.yml +263 -0
- skillgate-1.1.0/.github/workflows/npm-shim-release.yml +59 -0
- skillgate-1.1.0/.github/workflows/release-safety.yml +122 -0
- skillgate-1.1.0/.gitignore +82 -0
- skillgate-1.1.0/=0.25.0 +0 -0
- skillgate-1.1.0/AGENTS.md +131 -0
- skillgate-1.1.0/CHANGELOG.md +27 -0
- skillgate-1.1.0/CLAUDE.md +143 -0
- skillgate-1.1.0/CONTRIBUTING.md +690 -0
- skillgate-1.1.0/Dockerfile +82 -0
- skillgate-1.1.0/Dockerfile.api +37 -0
- skillgate-1.1.0/Dockerfile.worker +31 -0
- skillgate-1.1.0/LICENSE +50 -0
- skillgate-1.1.0/PKG-INFO +219 -0
- skillgate-1.1.0/README.md +143 -0
- skillgate-1.1.0/alembic/env.py +61 -0
- skillgate-1.1.0/alembic/versions/20260216_0001_initial_hosted_schema.py +165 -0
- skillgate-1.1.0/alembic/versions/20260216_0002_auth_and_stripe_resilience.py +126 -0
- skillgate-1.1.0/alembic/versions/20260218_0003_add_billing_interval.py +39 -0
- skillgate-1.1.0/alembic/versions/20260218_0004_email_verification_tokens.py +68 -0
- skillgate-1.1.0/alembic/versions/20260222_0006_supabase_ownership_split.py +99 -0
- skillgate-1.1.0/alembic.ini +38 -0
- skillgate-1.1.0/deploy.sh +116 -0
- skillgate-1.1.0/docker-compose.yml +89 -0
- skillgate-1.1.0/docs/API-MIGRATIONS.md +44 -0
- skillgate-1.1.0/docs/ARCHITECTURE.md +948 -0
- skillgate-1.1.0/docs/ARTIFACT-COVERAGE.md +57 -0
- skillgate-1.1.0/docs/CLAIM-LEDGER.yaml +261 -0
- skillgate-1.1.0/docs/CLI-API-SPEC.md +573 -0
- skillgate-1.1.0/docs/DOCS-SITE-ENTERPRISE-REPO-BLUEPRINT.md +103 -0
- skillgate-1.1.0/docs/ENTERPRISE-PRIVATE-DEPLOYMENT.md +59 -0
- skillgate-1.1.0/docs/ENTERPRISE-READINESS-CHECKLIST.md +52 -0
- skillgate-1.1.0/docs/ENTITLEMENT-GUIDE.md +699 -0
- skillgate-1.1.0/docs/EXPLAINER-PROVIDER-MIGRATION.md +127 -0
- skillgate-1.1.0/docs/FEATURE-INVENTORY-BASIC-COMPLEX-MOAT.md +456 -0
- skillgate-1.1.0/docs/GITHUB-ACTION-QUICKSTART.md +54 -0
- skillgate-1.1.0/docs/IMPLEMENTATION-PLAN.md +1953 -0
- skillgate-1.1.0/docs/INSTALLATION-GUIDE.md +197 -0
- skillgate-1.1.0/docs/INSTALLATION-INDIVIDUALS.md +56 -0
- skillgate-1.1.0/docs/INSTALLATION-LAUNCH-CHECKLIST.md +38 -0
- skillgate-1.1.0/docs/INSTALLATION-TEAMS-ORGS.md +46 -0
- skillgate-1.1.0/docs/LAUNCH-GUARDRAILS.md +33 -0
- skillgate-1.1.0/docs/LEGAL-REVIEW-CHECKLIST.md +81 -0
- skillgate-1.1.0/docs/LOCAL-E2E-TESTING.md +157 -0
- skillgate-1.1.0/docs/MARKETING-IMPLEMENTATION-BACKLOG.md +36 -0
- skillgate-1.1.0/docs/OBSERVABILITY-RUNBOOK.md +61 -0
- skillgate-1.1.0/docs/POLICY-REFERENCE.md +577 -0
- skillgate-1.1.0/docs/PRD.md +548 -0
- skillgate-1.1.0/docs/PRICING-MIGRATION-PLAN.md +34 -0
- skillgate-1.1.0/docs/PRICING-ROLLOUT-LAUNCH-GATE.md +42 -0
- skillgate-1.1.0/docs/PRICING-VALIDATION-LOG.md +26 -0
- skillgate-1.1.0/docs/PROD-SETUP-NETLIFY-RAILWAY.md +166 -0
- skillgate-1.1.0/docs/RELEASE-CHECKLIST-PYPI-NPM.md +123 -0
- skillgate-1.1.0/docs/RELEASE-SAFETY.md +62 -0
- skillgate-1.1.0/docs/RFC-AGENT-GATEWAY.md +546 -0
- skillgate-1.1.0/docs/RULE-CATALOG.md +419 -0
- skillgate-1.1.0/docs/SALES-CONTROL-PLANE-PLAYBOOK.md +36 -0
- skillgate-1.1.0/docs/SALES-ONE-PAGER-CONTROL-PLANE.md +35 -0
- skillgate-1.1.0/docs/SECURITY-COMPLIANCE.md +430 -0
- skillgate-1.1.0/docs/SECURITY-HARDENING-SPRINT.md +242 -0
- skillgate-1.1.0/docs/STABLE-LAUNCH-RUNBOOK.md +229 -0
- skillgate-1.1.0/docs/STANDOUT-ROADMAP.md +175 -0
- skillgate-1.1.0/docs/TEAM-BOOTSTRAP.md +42 -0
- skillgate-1.1.0/docs/TECHNICAL-SPEC.md +642 -0
- skillgate-1.1.0/docs/TESTING-STRATEGY.md +1090 -0
- skillgate-1.1.0/docs/initial-requirements-discussion.txt +2859 -0
- skillgate-1.1.0/docs/install-spec.json +65 -0
- skillgate-1.1.0/docs/open-core/PUBLIC_PRIVATE_MATRIX_v1.md +56 -0
- skillgate-1.1.0/docs/open-core/ci-parity-matrix.json +36 -0
- skillgate-1.1.0/docs/open-core/deployment-profile-lock.json +45 -0
- skillgate-1.1.0/docs/open-core/dual-repo-release-contract.json +91 -0
- skillgate-1.1.0/docs/open-core/public-export-policy.json +51 -0
- skillgate-1.1.0/docs/openapi/skillgate-openapi.json +163 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/AGENT-SKILLS-MANDATORY.md +21 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/BOUNDARIES.md +18 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/PER-TASK-RECORDS.md +16 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/PR-DESCRIPTION-SECTION11.md +26 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/RALPH-LOOP.md +8 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/READINESS-GATES.md +21 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/README.md +36 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/RELEASE-DECISION.md +24 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/SPECS.md +30 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/TASKS.md +55 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/VALIDATION-CHECKS.md +41 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/.gitkeep +0 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/adoption-kpi-baseline.json +30 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-2026-02-21.json +50 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-2026-02-21.md +22 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-2026-02-23.json +52 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-2026-02-23.md +23 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/contractor-trigger-checklist.md +24 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/corrective-action-plan.md +29 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/delegation-matrix.md +14 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/residual-risk-thresholds-2026-02-21.md +24 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/risk-register.json +117 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/weekly-risk-review.md +47 -0
- skillgate-1.1.0/docs/section-11-risk-mitigation/artifacts/wip-cap-policy.md +18 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/AGENT-SKILLS-MANDATORY.md +49 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/BOUNDARIES.md +25 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/PER-TASK-RECORDS.md +15 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/PR-DESCRIPTION-SECTION12.md +26 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/RALPH-LOOP.md +9 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/READINESS-GATES.md +27 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/README.md +44 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/RELEASE-DECISION.md +23 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/SPECS.md +43 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/TASKS.md +49 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/VALIDATION-CHECKS.md +27 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/artifacts/.gitkeep +0 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/artifacts/cli-contract-snapshots/scan-help.txt +0 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/artifacts/provider-contract-results.json +12 -0
- skillgate-1.1.0/docs/section-12-explanation-provider-extensibility/artifacts/provider-network-policy-results.json +15 -0
- skillgate-1.1.0/docs/section-13-installation-ux/AGENT-SKILLS-MANDATORY.md +48 -0
- skillgate-1.1.0/docs/section-13-installation-ux/BOUNDARIES.md +37 -0
- skillgate-1.1.0/docs/section-13-installation-ux/PER-TASK-RECORDS.md +24 -0
- skillgate-1.1.0/docs/section-13-installation-ux/PR-DESCRIPTION-SECTION13.md +38 -0
- skillgate-1.1.0/docs/section-13-installation-ux/RALPH-LOOP.md +15 -0
- skillgate-1.1.0/docs/section-13-installation-ux/READINESS-GATES.md +39 -0
- skillgate-1.1.0/docs/section-13-installation-ux/README.md +47 -0
- skillgate-1.1.0/docs/section-13-installation-ux/RELEASE-DECISION.md +25 -0
- skillgate-1.1.0/docs/section-13-installation-ux/SPECS.md +80 -0
- skillgate-1.1.0/docs/section-13-installation-ux/TASKS.md +82 -0
- skillgate-1.1.0/docs/section-13-installation-ux/VALIDATION-CHECKS.md +42 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/.gitkeep +0 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/docs-version-drift-check.json +4 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/install-matrix.json +11 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/install-spec.json +65 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/release-manifest-verification.json +5 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/release-manifest.json +1 -0
- skillgate-1.1.0/docs/section-13-installation-ux/artifacts/section13-gate-run.md +67 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/AGENT-SKILLS-MANDATORY.md +59 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/BOUNDARIES.md +42 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/PER-TASK-RECORDS.md +25 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/PR-DESCRIPTION-SECTION14.md +47 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/RALPH-LOOP.md +52 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/READINESS-GATES.md +42 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/README.md +47 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/RELEASE-DECISION.md +46 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/SPECS.md +152 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/TASKS.md +123 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/VALIDATION-CHECKS.md +50 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/artifacts/.gitignore +2 -0
- skillgate-1.1.0/docs/section-14-governed-pipeline/artifacts/.gitkeep +1 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/README.md +15 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/SPECS.md +21 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/TASKS.md +8 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/artifacts/conversion-copy-qa-2026-02-21.md +64 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/artifacts/cta-hierarchy-recommendation-diff-2026-02-21.md +50 -0
- skillgate-1.1.0/docs/section-15-web-ui-content-humanization/artifacts/install-ux-python-npx-pass-2026-02-21.md +43 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/AGENT-SKILLS-MANDATORY.md +48 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/BOUNDARIES.md +23 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/PER-TASK-RECORDS.md +109 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/READINESS-GATES.md +18 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/README.md +49 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/RELEASE-DECISION.md +33 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/SPECS.md +60 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/TASKS.md +47 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/VALIDATION-CHECKS.md +41 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/ci-parity-matrix-2026-02-21.md +19 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/ci-parity-validation-2026-02-21.json +6 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-env-contract-production-2026-02-21.md +6 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-env-contract-staging-2026-02-21.md +6 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-rehearsal-2026-02-21.md +31 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-rollback-rehearsal-2026-02-21.md +4 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-smoke-production-2026-02-21.md +3 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/cutover-smoke-staging-2026-02-21.md +3 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/deployment-profile-lock-2026-02-21.md +14 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/deployment-profile-lock-validation-2026-02-21.json +5 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/dual-repo-release-contract-2026-02-21.md +39 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/dual-repo-release-contract-validation-2026-02-21.json +6 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/dual-repo-release-sequence-2026-02-21.md +26 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/local-gate-pack-2026-02-21.md +54 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/physical-extraction-run-2026-02-21.md +24 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/private-ee-manifest-2026-02-21.json +43 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/public-ce-manifest-2026-02-21.json +233 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/public-export-gate-2026-02-21.json +7 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/public-export-negative-fixture-2026-02-21.json +12 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/split-readiness-manifest-2026-02-21.json +1 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/split-readiness-manifest-verify-2026-02-21.json +5 -0
- skillgate-1.1.0/docs/section-16-open-core-split-governance/artifacts/split-readiness-report-2026-02-21.md +36 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/AGENT-SKILLS-MANDATORY.md +40 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/BOUNDARIES.md +38 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/CACHE-STRATEGY.md +52 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/CUTOVER-ROLLBACK-RUNBOOK.md +104 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/EGRESS-CONTROLS.md +40 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/FRONTEND-AUTH-QUERY-CONTRACT.md +39 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/PER-TASK-RECORDS.md +332 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/PERFORMANCE-CAPACITY-PLAN.md +43 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/RALPH-LOOP.md +52 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/READINESS-GATES.md +43 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/README.md +53 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/RELEASE-DECISION.md +57 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/RLS-POLICY-CATALOG.md +50 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/SPECS.md +140 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/SUPABASE-RPC-CONTRACT.md +67 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/TASKS.md +78 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/VALIDATION-CHECKS.md +65 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/cache-verification-report.md +17 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/data-ownership-migration-dry-run-report.md +19 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/egress-policy-validation-report.md +20 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/final-gate-validation-summary.md +96 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/frontend-auth-hook-contract-test-report.md +20 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/full-ci-mypy-output.txt +1 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/full-ci-pytest-output.txt +2288 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/full-ci-ruff-output.txt +1 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/jwt-verifier-validation-report.md +16 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/performance-benchmark-report.md +19 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/provider-matrix-test-summary.md +17 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/rls-policy-matrix-and-negative-access-report.md +17 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/rollback-drill-log.md +20 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/rpc-function-contract-report.md +18 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/security-regression-summary.md +12 -0
- skillgate-1.1.0/docs/section-17-supabase-auth-migration/artifacts/staging-cutover-rehearsal-log.md +17 -0
- skillgate-1.1.0/docs/sprint-7.2-runbook.md +343 -0
- skillgate-1.1.0/docs/sprint-7.3-hybrid-enforcement-runbook.md +58 -0
- skillgate-1.1.0/docs/templates/team/bootstrap.env.example +10 -0
- skillgate-1.1.0/docs/templates/team/skillgate.team-baseline.yml +16 -0
- skillgate-1.1.0/homebrew/skillgate.rb +59 -0
- skillgate-1.1.0/k6/load_test.js +196 -0
- skillgate-1.1.0/netlify.toml +26 -0
- skillgate-1.1.0/npm-shim/README.md +72 -0
- skillgate-1.1.0/npm-shim/bin/skillgate.js +74 -0
- skillgate-1.1.0/npm-shim/package.json +24 -0
- skillgate-1.1.0/pyproject.toml +173 -0
- skillgate-1.1.0/scripts/deploy/.env.cloud-cli.example +28 -0
- skillgate-1.1.0/scripts/deploy/canary_gate.sh +42 -0
- skillgate-1.1.0/scripts/deploy/check-env-contract.sh +25 -0
- skillgate-1.1.0/scripts/deploy/local_production_go_deploy.sh +157 -0
- skillgate-1.1.0/scripts/deploy/rollback_rehearsal.sh +23 -0
- skillgate-1.1.0/scripts/deploy/rollback_trigger.sh +14 -0
- skillgate-1.1.0/scripts/deploy/smoke.sh +26 -0
- skillgate-1.1.0/scripts/deploy/smoke_api.sh +14 -0
- skillgate-1.1.0/scripts/deploy/smoke_web.sh +14 -0
- skillgate-1.1.0/scripts/install/install.ps1 +199 -0
- skillgate-1.1.0/scripts/install/install.sh +288 -0
- skillgate-1.1.0/scripts/install/skillgate.rb +64 -0
- skillgate-1.1.0/scripts/migration/supabase_compat_migration.py +527 -0
- skillgate-1.1.0/scripts/quality/check_claim_ledger.py +362 -0
- skillgate-1.1.0/scripts/quality/check_deployment_profile_lock.py +113 -0
- skillgate-1.1.0/scripts/quality/check_dual_repo_release_contract.py +172 -0
- skillgate-1.1.0/scripts/quality/check_governance_scope_gate.py +134 -0
- skillgate-1.1.0/scripts/quality/check_install_docs_freshness.py +123 -0
- skillgate-1.1.0/scripts/quality/check_split_ci_parity.py +67 -0
- skillgate-1.1.0/scripts/quality/check_wrapper_enforcement.py +70 -0
- skillgate-1.1.0/scripts/quality/generate_release_manifest.py +129 -0
- skillgate-1.1.0/scripts/quality/generate_reliability_scorecard.py +209 -0
- skillgate-1.1.0/scripts/quality/recall_report.py +87 -0
- skillgate-1.1.0/scripts/quality/run_local_ci_gate.py +215 -0
- skillgate-1.1.0/scripts/quality/verify_release_manifest.py +132 -0
- skillgate-1.1.0/scripts/release/check_public_export.py +135 -0
- skillgate-1.1.0/scripts/release/run_physical_extraction.py +179 -0
- skillgate-1.1.0/scripts/test/rollback_high_privilege_user.sql +66 -0
- skillgate-1.1.0/scripts/test/seed_high_privilege_user.sql +340 -0
- skillgate-1.1.0/scripts/test/upgrade_user.sql +58 -0
- skillgate-1.1.0/scripts/test_package_release.sh +57 -0
- skillgate-1.1.0/setup.cfg +4 -0
- skillgate-1.1.0/skillgate/__init__.py +5 -0
- skillgate-1.1.0/skillgate/__main__.py +5 -0
- skillgate-1.1.0/skillgate/api/__init__.py +1 -0
- skillgate-1.1.0/skillgate/api/app.py +249 -0
- skillgate-1.1.0/skillgate/api/auth_observability.py +141 -0
- skillgate-1.1.0/skillgate/api/db.py +127 -0
- skillgate-1.1.0/skillgate/api/device_codes.py +188 -0
- skillgate-1.1.0/skillgate/api/entitlement.py +76 -0
- skillgate-1.1.0/skillgate/api/entitlement_teams.py +91 -0
- skillgate-1.1.0/skillgate/api/errors.py +83 -0
- skillgate-1.1.0/skillgate/api/middleware/__init__.py +5 -0
- skillgate-1.1.0/skillgate/api/middleware/bot_mitigation.py +75 -0
- skillgate-1.1.0/skillgate/api/migrations/0001_initial.sql +96 -0
- skillgate-1.1.0/skillgate/api/migrations/supabase/001_rpc_contract_v1.sql +96 -0
- skillgate-1.1.0/skillgate/api/migrations/supabase/002_rls_policies_v1.sql +63 -0
- skillgate-1.1.0/skillgate/api/migrations/supabase/email_templates/confirm_signup.html +102 -0
- skillgate-1.1.0/skillgate/api/migrations/supabase/email_templates/magic_link.html +101 -0
- skillgate-1.1.0/skillgate/api/migrations/supabase/email_templates/password_reset.html +113 -0
- skillgate-1.1.0/skillgate/api/models.py +272 -0
- skillgate-1.1.0/skillgate/api/pricing_catalog.py +371 -0
- skillgate-1.1.0/skillgate/api/rate_limit.py +68 -0
- skillgate-1.1.0/skillgate/api/redis_circuit_breaker.py +137 -0
- skillgate-1.1.0/skillgate/api/redis_rate_limit.py +61 -0
- skillgate-1.1.0/skillgate/api/resilience.py +94 -0
- skillgate-1.1.0/skillgate/api/roadmap_catalog.py +136 -0
- skillgate-1.1.0/skillgate/api/routes/__init__.py +1 -0
- skillgate-1.1.0/skillgate/api/routes/alerts.py +180 -0
- skillgate-1.1.0/skillgate/api/routes/api_keys.py +267 -0
- skillgate-1.1.0/skillgate/api/routes/audit.py +100 -0
- skillgate-1.1.0/skillgate/api/routes/auth.py +1376 -0
- skillgate-1.1.0/skillgate/api/routes/entitlements.py +381 -0
- skillgate-1.1.0/skillgate/api/routes/health.py +15 -0
- skillgate-1.1.0/skillgate/api/routes/hunt.py +117 -0
- skillgate-1.1.0/skillgate/api/routes/license.py +57 -0
- skillgate-1.1.0/skillgate/api/routes/payments.py +1213 -0
- skillgate-1.1.0/skillgate/api/routes/pricing.py +15 -0
- skillgate-1.1.0/skillgate/api/routes/retroscan.py +179 -0
- skillgate-1.1.0/skillgate/api/routes/roadmap.py +15 -0
- skillgate-1.1.0/skillgate/api/routes/scans.py +192 -0
- skillgate-1.1.0/skillgate/api/routes/teams.py +256 -0
- skillgate-1.1.0/skillgate/api/routes/usage.py +139 -0
- skillgate-1.1.0/skillgate/api/routes/verify.py +54 -0
- skillgate-1.1.0/skillgate/api/security.py +149 -0
- skillgate-1.1.0/skillgate/api/settings.py +164 -0
- skillgate-1.1.0/skillgate/api/supabase_auth_provider.py +514 -0
- skillgate-1.1.0/skillgate/api/supabase_client.py +296 -0
- skillgate-1.1.0/skillgate/api/supabase_egress.py +74 -0
- skillgate-1.1.0/skillgate/api/supabase_jwt.py +197 -0
- skillgate-1.1.0/skillgate/api/telemetry.py +153 -0
- skillgate-1.1.0/skillgate/api/worker.py +72 -0
- skillgate-1.1.0/skillgate/assets/logo.ansi +73 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_16.ansi +21 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_16_light.ansi +21 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_20.ansi +26 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_20_light.ansi +26 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_24.ansi +31 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_24_light.ansi +31 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_28.ansi +36 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_28_light.ansi +36 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_32.ansi +41 -0
- skillgate-1.1.0/skillgate/assets/logo_compact_32_light.ansi +41 -0
- skillgate-1.1.0/skillgate/assets/logo_small_48.ansi +62 -0
- skillgate-1.1.0/skillgate/assets/logo_small_48_light.ansi +62 -0
- skillgate-1.1.0/skillgate/assets/logo_small_48_light_old.ansi +49 -0
- skillgate-1.1.0/skillgate/assets/logo_small_48_old.ansi +49 -0
- skillgate-1.1.0/skillgate/ci/__init__.py +1 -0
- skillgate-1.1.0/skillgate/ci/bitbucket/__init__.py +0 -0
- skillgate-1.1.0/skillgate/ci/bitbucket/template.yml +75 -0
- skillgate-1.1.0/skillgate/ci/github/__init__.py +1 -0
- skillgate-1.1.0/skillgate/ci/github/action.yml +150 -0
- skillgate-1.1.0/skillgate/ci/github/annotations.py +112 -0
- skillgate-1.1.0/skillgate/ci/gitlab/__init__.py +1 -0
- skillgate-1.1.0/skillgate/ci/gitlab/template.yml +68 -0
- skillgate-1.1.0/skillgate/ci/noise.py +155 -0
- skillgate-1.1.0/skillgate/cli/__init__.py +1 -0
- skillgate-1.1.0/skillgate/cli/app.py +158 -0
- skillgate-1.1.0/skillgate/cli/branding.py +175 -0
- skillgate-1.1.0/skillgate/cli/commands/__init__.py +1 -0
- skillgate-1.1.0/skillgate/cli/commands/approval.py +88 -0
- skillgate-1.1.0/skillgate/cli/commands/auth.py +365 -0
- skillgate-1.1.0/skillgate/cli/commands/bom.py +106 -0
- skillgate-1.1.0/skillgate/cli/commands/dag.py +124 -0
- skillgate-1.1.0/skillgate/cli/commands/doctor.py +146 -0
- skillgate-1.1.0/skillgate/cli/commands/drift.py +314 -0
- skillgate-1.1.0/skillgate/cli/commands/gateway.py +381 -0
- skillgate-1.1.0/skillgate/cli/commands/hooks.py +141 -0
- skillgate-1.1.0/skillgate/cli/commands/hunt.py +186 -0
- skillgate-1.1.0/skillgate/cli/commands/init.py +43 -0
- skillgate-1.1.0/skillgate/cli/commands/keys.py +59 -0
- skillgate-1.1.0/skillgate/cli/commands/reputation.py +146 -0
- skillgate-1.1.0/skillgate/cli/commands/retroscan.py +214 -0
- skillgate-1.1.0/skillgate/cli/commands/rules_cmd.py +81 -0
- skillgate-1.1.0/skillgate/cli/commands/run.py +415 -0
- skillgate-1.1.0/skillgate/cli/commands/scan.py +1097 -0
- skillgate-1.1.0/skillgate/cli/commands/simulate.py +414 -0
- skillgate-1.1.0/skillgate/cli/commands/submit_scan.py +49 -0
- skillgate-1.1.0/skillgate/cli/commands/verify.py +55 -0
- skillgate-1.1.0/skillgate/cli/formatters/__init__.py +7 -0
- skillgate-1.1.0/skillgate/cli/formatters/human.py +440 -0
- skillgate-1.1.0/skillgate/cli/formatters/json_fmt.py +19 -0
- skillgate-1.1.0/skillgate/cli/formatters/sarif.py +173 -0
- skillgate-1.1.0/skillgate/cli/main.py +6 -0
- skillgate-1.1.0/skillgate/cli/remote.py +341 -0
- skillgate-1.1.0/skillgate/cli/scan_submit.py +90 -0
- skillgate-1.1.0/skillgate/config/__init__.py +1 -0
- skillgate-1.1.0/skillgate/config/entitlement.py +188 -0
- skillgate-1.1.0/skillgate/config/license.py +75 -0
- skillgate-1.1.0/skillgate/config/secrets.py +107 -0
- skillgate-1.1.0/skillgate/core/__init__.py +0 -0
- skillgate-1.1.0/skillgate/core/analyzer/__init__.py +33 -0
- skillgate-1.1.0/skillgate/core/analyzer/correlation.py +248 -0
- skillgate-1.1.0/skillgate/core/analyzer/engine.py +140 -0
- skillgate-1.1.0/skillgate/core/analyzer/perf_guard.py +199 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/__init__.py +59 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/base.py +159 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/command.py +305 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/config.py +299 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/credential.py +185 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/eval.py +131 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/filesystem.py +167 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/go.py +281 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/injection.py +119 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/js_ast.py +92 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/network.py +141 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/obfuscation.py +146 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/prompt.py +220 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/ruby.py +329 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/rust.py +278 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/shell.py +201 -0
- skillgate-1.1.0/skillgate/core/analyzer/rules/shell_ast.py +86 -0
- skillgate-1.1.0/skillgate/core/analyzer/treesitter.py +156 -0
- skillgate-1.1.0/skillgate/core/analyzer/unicode_normalizer.py +232 -0
- skillgate-1.1.0/skillgate/core/connectors/__init__.py +35 -0
- skillgate-1.1.0/skillgate/core/connectors/base.py +57 -0
- skillgate-1.1.0/skillgate/core/connectors/file_tip.py +111 -0
- skillgate-1.1.0/skillgate/core/connectors/manager.py +159 -0
- skillgate-1.1.0/skillgate/core/connectors/models.py +66 -0
- skillgate-1.1.0/skillgate/core/connectors/registry.py +69 -0
- skillgate-1.1.0/skillgate/core/enricher/__init__.py +9 -0
- skillgate-1.1.0/skillgate/core/enricher/catalog.py +944 -0
- skillgate-1.1.0/skillgate/core/enricher/engine.py +45 -0
- skillgate-1.1.0/skillgate/core/enricher/models.py +23 -0
- skillgate-1.1.0/skillgate/core/entitlement/__init__.py +65 -0
- skillgate-1.1.0/skillgate/core/entitlement/airgap.py +194 -0
- skillgate-1.1.0/skillgate/core/entitlement/cache.py +63 -0
- skillgate-1.1.0/skillgate/core/entitlement/enterprise.py +72 -0
- skillgate-1.1.0/skillgate/core/entitlement/enterprise_adapter.py +137 -0
- skillgate-1.1.0/skillgate/core/entitlement/gates.py +75 -0
- skillgate-1.1.0/skillgate/core/entitlement/mode.py +83 -0
- skillgate-1.1.0/skillgate/core/entitlement/models.py +139 -0
- skillgate-1.1.0/skillgate/core/entitlement/quota.py +102 -0
- skillgate-1.1.0/skillgate/core/entitlement/resilience.py +47 -0
- skillgate-1.1.0/skillgate/core/entitlement/resolver.py +401 -0
- skillgate-1.1.0/skillgate/core/entitlement/usage_authority.py +228 -0
- skillgate-1.1.0/skillgate/core/errors.py +40 -0
- skillgate-1.1.0/skillgate/core/explainer/__init__.py +9 -0
- skillgate-1.1.0/skillgate/core/explainer/engine.py +458 -0
- skillgate-1.1.0/skillgate/core/explainer/templates.py +122 -0
- skillgate-1.1.0/skillgate/core/gateway/__init__.py +94 -0
- skillgate-1.1.0/skillgate/core/gateway/allowlist.py +96 -0
- skillgate-1.1.0/skillgate/core/gateway/approval.py +194 -0
- skillgate-1.1.0/skillgate/core/gateway/bom_gate.py +192 -0
- skillgate-1.1.0/skillgate/core/gateway/budget.py +363 -0
- skillgate-1.1.0/skillgate/core/gateway/executor.py +43 -0
- skillgate-1.1.0/skillgate/core/gateway/lineage.py +246 -0
- skillgate-1.1.0/skillgate/core/gateway/runtime.py +67 -0
- skillgate-1.1.0/skillgate/core/gateway/runtime_engine.py +147 -0
- skillgate-1.1.0/skillgate/core/gateway/sandbox.py +90 -0
- skillgate-1.1.0/skillgate/core/gateway/scope.py +100 -0
- skillgate-1.1.0/skillgate/core/gateway/session.py +202 -0
- skillgate-1.1.0/skillgate/core/gateway/top_guard.py +168 -0
- skillgate-1.1.0/skillgate/core/hunt/__init__.py +25 -0
- skillgate-1.1.0/skillgate/core/hunt/engine.py +290 -0
- skillgate-1.1.0/skillgate/core/hunt/models.py +127 -0
- skillgate-1.1.0/skillgate/core/hunt/parser.py +150 -0
- skillgate-1.1.0/skillgate/core/models/__init__.py +34 -0
- skillgate-1.1.0/skillgate/core/models/artifact.py +96 -0
- skillgate-1.1.0/skillgate/core/models/bundle.py +48 -0
- skillgate-1.1.0/skillgate/core/models/enums.py +40 -0
- skillgate-1.1.0/skillgate/core/models/finding.py +81 -0
- skillgate-1.1.0/skillgate/core/models/report.py +99 -0
- skillgate-1.1.0/skillgate/core/orchestrator/__init__.py +59 -0
- skillgate-1.1.0/skillgate/core/orchestrator/approval.py +80 -0
- skillgate-1.1.0/skillgate/core/orchestrator/engine.py +166 -0
- skillgate-1.1.0/skillgate/core/orchestrator/evidence.py +102 -0
- skillgate-1.1.0/skillgate/core/orchestrator/models.py +78 -0
- skillgate-1.1.0/skillgate/core/orchestrator/pipeline.py +166 -0
- skillgate-1.1.0/skillgate/core/orchestrator/triage.py +167 -0
- skillgate-1.1.0/skillgate/core/orchestrator/write_path.py +92 -0
- skillgate-1.1.0/skillgate/core/parser/__init__.py +26 -0
- skillgate-1.1.0/skillgate/core/parser/archive.py +672 -0
- skillgate-1.1.0/skillgate/core/parser/bundle.py +100 -0
- skillgate-1.1.0/skillgate/core/parser/document.py +366 -0
- skillgate-1.1.0/skillgate/core/parser/fleet.py +115 -0
- skillgate-1.1.0/skillgate/core/parser/manifest.py +188 -0
- skillgate-1.1.0/skillgate/core/parser/markdown.py +352 -0
- skillgate-1.1.0/skillgate/core/parser/source.py +90 -0
- skillgate-1.1.0/skillgate/core/policy/__init__.py +36 -0
- skillgate-1.1.0/skillgate/core/policy/engine.py +501 -0
- skillgate-1.1.0/skillgate/core/policy/loader.py +148 -0
- skillgate-1.1.0/skillgate/core/policy/presets.py +148 -0
- skillgate-1.1.0/skillgate/core/policy/schema.py +276 -0
- skillgate-1.1.0/skillgate/core/reputation/__init__.py +17 -0
- skillgate-1.1.0/skillgate/core/reputation/models.py +49 -0
- skillgate-1.1.0/skillgate/core/reputation/policy.py +147 -0
- skillgate-1.1.0/skillgate/core/reputation/redaction.py +13 -0
- skillgate-1.1.0/skillgate/core/reputation/store.py +116 -0
- skillgate-1.1.0/skillgate/core/reputation/verifier.py +96 -0
- skillgate-1.1.0/skillgate/core/retroscan/__init__.py +24 -0
- skillgate-1.1.0/skillgate/core/retroscan/engine.py +222 -0
- skillgate-1.1.0/skillgate/core/retroscan/models.py +80 -0
- skillgate-1.1.0/skillgate/core/retroscan/store.py +138 -0
- skillgate-1.1.0/skillgate/core/scorer/__init__.py +6 -0
- skillgate-1.1.0/skillgate/core/scorer/engine.py +85 -0
- skillgate-1.1.0/skillgate/core/scorer/severity.py +31 -0
- skillgate-1.1.0/skillgate/core/scorer/weights.py +15 -0
- skillgate-1.1.0/skillgate/core/signer/__init__.py +22 -0
- skillgate-1.1.0/skillgate/core/signer/canonical.py +44 -0
- skillgate-1.1.0/skillgate/core/signer/engine.py +150 -0
- skillgate-1.1.0/skillgate/core/signer/keys.py +120 -0
- skillgate-1.1.0/skillgate/py.typed +0 -0
- skillgate-1.1.0/skillgate/version.py +3 -0
- skillgate-1.1.0/skillgate-docs/node_modules/flatted/python/flatted.py +149 -0
- skillgate-1.1.0/skillgate.egg-info/PKG-INFO +219 -0
- skillgate-1.1.0/skillgate.egg-info/SOURCES.txt +939 -0
- skillgate-1.1.0/skillgate.egg-info/dependency_links.txt +1 -0
- skillgate-1.1.0/skillgate.egg-info/entry_points.txt +2 -0
- skillgate-1.1.0/skillgate.egg-info/requires.txt +55 -0
- skillgate-1.1.0/skillgate.egg-info/top_level.txt +2 -0
- skillgate-1.1.0/tests/__init__.py +0 -0
- skillgate-1.1.0/tests/conftest.py +101 -0
- skillgate-1.1.0/tests/defense/__init__.py +5 -0
- skillgate-1.1.0/tests/defense/corpus/__init__.py +1 -0
- skillgate-1.1.0/tests/defense/corpus/backdoor-skill/SKILL.md +10 -0
- skillgate-1.1.0/tests/defense/corpus/backdoor-skill/agent.py +20 -0
- skillgate-1.1.0/tests/defense/corpus/credential-harvester/SKILL.md +10 -0
- skillgate-1.1.0/tests/defense/corpus/credential-harvester/harvester.py +54 -0
- skillgate-1.1.0/tests/defense/corpus/eval-injection/SKILL.md +10 -0
- skillgate-1.1.0/tests/defense/corpus/eval-injection/main.py +25 -0
- skillgate-1.1.0/tests/defense/corpus/obfuscated-malware/SKILL.md +10 -0
- skillgate-1.1.0/tests/defense/corpus/obfuscated-malware/agent.py +33 -0
- skillgate-1.1.0/tests/defense/corpus/rce-skill/SKILL.md +10 -0
- skillgate-1.1.0/tests/defense/corpus/rce-skill/skill.py +25 -0
- skillgate-1.1.0/tests/defense/test_false_negative_corpus.py +143 -0
- skillgate-1.1.0/tests/defense/test_mutation_detection.py +257 -0
- skillgate-1.1.0/tests/defense/test_security_fixes_16_29_35.py +446 -0
- skillgate-1.1.0/tests/docs/__init__.py +1 -0
- skillgate-1.1.0/tests/docs/test_docs_exist.py +285 -0
- skillgate-1.1.0/tests/docs/test_explainer_provider_migration.py +25 -0
- skillgate-1.1.0/tests/docs/test_hybrid_runbook.py +14 -0
- skillgate-1.1.0/tests/docs/test_installation_org_enterprise_contract.py +36 -0
- skillgate-1.1.0/tests/docs/test_installation_spec_contract.py +82 -0
- skillgate-1.1.0/tests/docs/test_installation_tracks.py +30 -0
- skillgate-1.1.0/tests/docs/test_npm_shim_contract.py +40 -0
- skillgate-1.1.0/tests/docs/test_pricing_launch_controls.py +46 -0
- skillgate-1.1.0/tests/e2e/__init__.py +0 -0
- skillgate-1.1.0/tests/e2e/test_agent_mode.py +95 -0
- skillgate-1.1.0/tests/e2e/test_api_command_matrix.py +255 -0
- skillgate-1.1.0/tests/e2e/test_cli_command_matrix.py +616 -0
- skillgate-1.1.0/tests/e2e/test_cli_policy.py +178 -0
- skillgate-1.1.0/tests/e2e/test_cli_sarif.py +150 -0
- skillgate-1.1.0/tests/e2e/test_cli_scan.py +88 -0
- skillgate-1.1.0/tests/e2e/test_cli_verify.py +189 -0
- skillgate-1.1.0/tests/e2e/test_npm_shim_wrapper.py +86 -0
- skillgate-1.1.0/tests/e2e/test_packaging_build_install.py +66 -0
- skillgate-1.1.0/tests/e2e/test_packaging_release.py +301 -0
- skillgate-1.1.0/tests/fixtures/bom_unknown_skills.jsonl +5 -0
- skillgate-1.1.0/tests/fixtures/injection_corpus_v1.jsonl +520 -0
- skillgate-1.1.0/tests/fixtures/policies/custom_overrides.yml +32 -0
- skillgate-1.1.0/tests/fixtures/policies/development.yml +22 -0
- skillgate-1.1.0/tests/fixtures/policies/invalid_version.yml +6 -0
- skillgate-1.1.0/tests/fixtures/policies/invalid_yaml.yml +2 -0
- skillgate-1.1.0/tests/fixtures/policies/production.yml +27 -0
- skillgate-1.1.0/tests/fixtures/policies/strict.yml +24 -0
- skillgate-1.1.0/tests/fixtures/runtime/efficacy_corpus.json +34 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/evil-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/evil-skill/handler.py +61 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/go-evil-skill/handler.go +57 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/go-evil-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/js-evil-skill/index.js +25 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/js-evil-skill/package.json +6 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/ruby-evil-skill/handler.rb +45 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/ruby-evil-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/rust-evil-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/malicious/rust-evil-skill/src/lib.rs +60 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/datetime-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/datetime-skill/handler.py +18 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/go-skill/handler.go +13 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/go-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/hello-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/hello-skill/handler.py +15 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/hello-skill/utils.py +11 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/json-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/json-skill/handler.py +19 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/logging-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/logging-skill/handler.py +19 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/math-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/math-skill/handler.py +16 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/node-skill/index.js +11 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/node-skill/package.json +9 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/ruby-skill/handler.rb +11 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/ruby-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/rust-skill/skill.json +1 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/rust-skill/src/lib.rs +19 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/text-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/text-skill/handler.py +16 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/validator-skill/SKILL.md +6 -0
- skillgate-1.1.0/tests/fixtures/skills/safe/validator-skill/handler.py +21 -0
- skillgate-1.1.0/tests/integration/__init__.py +0 -0
- skillgate-1.1.0/tests/integration/test_bom_gate.py +84 -0
- skillgate-1.1.0/tests/integration/test_ci_output.py +201 -0
- skillgate-1.1.0/tests/integration/test_ci_templates.py +123 -0
- skillgate-1.1.0/tests/integration/test_enrichment_pipeline.py +83 -0
- skillgate-1.1.0/tests/integration/test_gateway_runtime_efficacy_corpus.py +34 -0
- skillgate-1.1.0/tests/integration/test_multilang_pipeline.py +106 -0
- skillgate-1.1.0/tests/integration/test_performance.py +127 -0
- skillgate-1.1.0/tests/integration/test_policy_enforcement.py +138 -0
- skillgate-1.1.0/tests/integration/test_scan_pipeline.py +100 -0
- skillgate-1.1.0/tests/integration/test_security_audit.py +178 -0
- skillgate-1.1.0/tests/integration/test_signed_reports.py +104 -0
- skillgate-1.1.0/tests/integration/test_top_guard.py +78 -0
- skillgate-1.1.0/tests/slo/__init__.py +5 -0
- skillgate-1.1.0/tests/slo/test_false_positive_rate.py +354 -0
- skillgate-1.1.0/tests/slo/test_latency_budget.py +213 -0
- skillgate-1.1.0/tests/unit/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_analyzer/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_base_ast_rule.py +90 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_correlation.py +219 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_engine.py +117 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_engine_extended.py +182 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_fn_fp_harness.py +142 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_perf_guard.py +171 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_base_language_filter.py +50 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_credential.py +96 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_eval.py +73 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_filesystem.py +84 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_go.py +178 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_injection.py +58 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_js_ast.py +110 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_network.py +87 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_obfuscation.py +86 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_ruby.py +212 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_rust.py +172 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_shell.py +135 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_rules/test_shell_ast.py +89 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_treesitter.py +31 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_treesitter_extended.py +258 -0
- skillgate-1.1.0/tests/unit/test_analyzer/test_unicode_normalizer.py +182 -0
- skillgate-1.1.0/tests/unit/test_api/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_api/conftest.py +68 -0
- skillgate-1.1.0/tests/unit/test_api/test_alerts_api.py +165 -0
- skillgate-1.1.0/tests/unit/test_api/test_app_lifespan.py +59 -0
- skillgate-1.1.0/tests/unit/test_api/test_audit_api.py +90 -0
- skillgate-1.1.0/tests/unit/test_api/test_auth_api_keys.py +553 -0
- skillgate-1.1.0/tests/unit/test_api/test_auth_contract_migration_modes.py +195 -0
- skillgate-1.1.0/tests/unit/test_api/test_auth_edges.py +170 -0
- skillgate-1.1.0/tests/unit/test_api/test_auth_observability.py +52 -0
- skillgate-1.1.0/tests/unit/test_api/test_bot_mitigation.py +114 -0
- skillgate-1.1.0/tests/unit/test_api/test_db.py +99 -0
- skillgate-1.1.0/tests/unit/test_api/test_device_codes.py +110 -0
- skillgate-1.1.0/tests/unit/test_api/test_entitlement_api.py +180 -0
- skillgate-1.1.0/tests/unit/test_api/test_entitlement_teams.py +64 -0
- skillgate-1.1.0/tests/unit/test_api/test_entitlements_api.py +193 -0
- skillgate-1.1.0/tests/unit/test_api/test_error_envelope.py +44 -0
- skillgate-1.1.0/tests/unit/test_api/test_health.py +19 -0
- skillgate-1.1.0/tests/unit/test_api/test_hunt_api.py +166 -0
- skillgate-1.1.0/tests/unit/test_api/test_license_api.py +59 -0
- skillgate-1.1.0/tests/unit/test_api/test_payments_annual_billing.py +411 -0
- skillgate-1.1.0/tests/unit/test_api/test_payments_resilience.py +870 -0
- skillgate-1.1.0/tests/unit/test_api/test_pricing_api.py +54 -0
- skillgate-1.1.0/tests/unit/test_api/test_rate_limit.py +119 -0
- skillgate-1.1.0/tests/unit/test_api/test_redis_circuit_breaker.py +87 -0
- skillgate-1.1.0/tests/unit/test_api/test_redis_rate_limit.py +113 -0
- skillgate-1.1.0/tests/unit/test_api/test_resilience.py +70 -0
- skillgate-1.1.0/tests/unit/test_api/test_retroscan_api.py +70 -0
- skillgate-1.1.0/tests/unit/test_api/test_roadmap_api.py +35 -0
- skillgate-1.1.0/tests/unit/test_api/test_scan_rate_limit.py +124 -0
- skillgate-1.1.0/tests/unit/test_api/test_scans_api.py +102 -0
- skillgate-1.1.0/tests/unit/test_api/test_security_headers.py +85 -0
- skillgate-1.1.0/tests/unit/test_api/test_security_utils.py +123 -0
- skillgate-1.1.0/tests/unit/test_api/test_settings.py +161 -0
- skillgate-1.1.0/tests/unit/test_api/test_supabase_auth_provider.py +405 -0
- skillgate-1.1.0/tests/unit/test_api/test_supabase_client.py +195 -0
- skillgate-1.1.0/tests/unit/test_api/test_supabase_egress.py +60 -0
- skillgate-1.1.0/tests/unit/test_api/test_supabase_jwt.py +119 -0
- skillgate-1.1.0/tests/unit/test_api/test_supabase_settings.py +216 -0
- skillgate-1.1.0/tests/unit/test_api/test_teams_api.py +229 -0
- skillgate-1.1.0/tests/unit/test_api/test_telemetry.py +115 -0
- skillgate-1.1.0/tests/unit/test_api/test_verify_api.py +74 -0
- skillgate-1.1.0/tests/unit/test_api/test_worker.py +94 -0
- skillgate-1.1.0/tests/unit/test_ci/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_ci/test_annotations.py +117 -0
- skillgate-1.1.0/tests/unit/test_ci/test_noise.py +263 -0
- skillgate-1.1.0/tests/unit/test_ci/test_wrapper_enforcement.py +40 -0
- skillgate-1.1.0/tests/unit/test_claim_ledger.py +103 -0
- skillgate-1.1.0/tests/unit/test_cli/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_cli/test_approval_commands.py +64 -0
- skillgate-1.1.0/tests/unit/test_cli/test_auth.py +345 -0
- skillgate-1.1.0/tests/unit/test_cli/test_branding.py +106 -0
- skillgate-1.1.0/tests/unit/test_cli/test_command_tree.py +99 -0
- skillgate-1.1.0/tests/unit/test_cli/test_doctor_command.py +60 -0
- skillgate-1.1.0/tests/unit/test_cli/test_drift_commands.py +100 -0
- skillgate-1.1.0/tests/unit/test_cli/test_entitlement_gates.py +569 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_human.py +64 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_human_color.py +372 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_human_extended.py +133 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_json.py +66 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_provenance_enrichment.py +282 -0
- skillgate-1.1.0/tests/unit/test_cli/test_formatters/test_sarif.py +257 -0
- skillgate-1.1.0/tests/unit/test_cli/test_gateway_commands.py +319 -0
- skillgate-1.1.0/tests/unit/test_cli/test_gateway_native_commands.py +370 -0
- skillgate-1.1.0/tests/unit/test_cli/test_hooks.py +96 -0
- skillgate-1.1.0/tests/unit/test_cli/test_init_command.py +58 -0
- skillgate-1.1.0/tests/unit/test_cli/test_keys_command.py +48 -0
- skillgate-1.1.0/tests/unit/test_cli/test_remote.py +241 -0
- skillgate-1.1.0/tests/unit/test_cli/test_reputation_commands.py +107 -0
- skillgate-1.1.0/tests/unit/test_cli/test_scan_command.py +483 -0
- skillgate-1.1.0/tests/unit/test_cli/test_scan_extended.py +107 -0
- skillgate-1.1.0/tests/unit/test_cli/test_simulate_command.py +194 -0
- skillgate-1.1.0/tests/unit/test_cli/test_submit_scan_command.py +56 -0
- skillgate-1.1.0/tests/unit/test_cli/test_verify_command.py +86 -0
- skillgate-1.1.0/tests/unit/test_cli/test_watch_mode.py +34 -0
- skillgate-1.1.0/tests/unit/test_config/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_config/test_license.py +97 -0
- skillgate-1.1.0/tests/unit/test_config/test_secrets.py +213 -0
- skillgate-1.1.0/tests/unit/test_connectors/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_connectors/test_file_tip.py +125 -0
- skillgate-1.1.0/tests/unit/test_connectors/test_manager.py +261 -0
- skillgate-1.1.0/tests/unit/test_connectors/test_models.py +104 -0
- skillgate-1.1.0/tests/unit/test_connectors/test_registry.py +131 -0
- skillgate-1.1.0/tests/unit/test_enricher/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_enricher/test_catalog.py +81 -0
- skillgate-1.1.0/tests/unit/test_enricher/test_engine.py +87 -0
- skillgate-1.1.0/tests/unit/test_enricher/test_models.py +76 -0
- skillgate-1.1.0/tests/unit/test_entitlement/__init__.py +128 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_airgap_pack.py +85 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_cache.py +99 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_enterprise.py +88 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_enterprise_adapter.py +244 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_gates.py +134 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_mode.py +70 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_quota.py +95 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_resilience.py +54 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_resolver.py +437 -0
- skillgate-1.1.0/tests/unit/test_entitlement/test_usage_authority.py +243 -0
- skillgate-1.1.0/tests/unit/test_explainer/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_explainer/test_engine.py +338 -0
- skillgate-1.1.0/tests/unit/test_explainer/test_templates.py +97 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_approval.py +53 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_bom_gate.py +30 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_budget.py +131 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_executor.py +39 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_lineage.py +52 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_runtime_engine.py +135 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_scope_and_session.py +52 -0
- skillgate-1.1.0/tests/unit/test_gateway/test_top_guard.py +28 -0
- skillgate-1.1.0/tests/unit/test_hunt/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_hunt/test_cli.py +167 -0
- skillgate-1.1.0/tests/unit/test_hunt/test_engine.py +331 -0
- skillgate-1.1.0/tests/unit/test_hunt/test_models.py +101 -0
- skillgate-1.1.0/tests/unit/test_hunt/test_parser.py +137 -0
- skillgate-1.1.0/tests/unit/test_models/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_models/test_finding.py +127 -0
- skillgate-1.1.0/tests/unit/test_models/test_report.py +90 -0
- skillgate-1.1.0/tests/unit/test_orchestrator/test_approval_evidence.py +109 -0
- skillgate-1.1.0/tests/unit/test_orchestrator/test_engine.py +99 -0
- skillgate-1.1.0/tests/unit/test_orchestrator/test_pipeline.py +119 -0
- skillgate-1.1.0/tests/unit/test_orchestrator/test_triage.py +73 -0
- skillgate-1.1.0/tests/unit/test_orchestrator/test_write_path.py +81 -0
- skillgate-1.1.0/tests/unit/test_packaging/test_pyproject_contract.py +40 -0
- skillgate-1.1.0/tests/unit/test_parser/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_parser/test_archive.py +505 -0
- skillgate-1.1.0/tests/unit/test_parser/test_bundle.py +82 -0
- skillgate-1.1.0/tests/unit/test_parser/test_document.py +269 -0
- skillgate-1.1.0/tests/unit/test_parser/test_fleet.py +61 -0
- skillgate-1.1.0/tests/unit/test_parser/test_manifest.py +87 -0
- skillgate-1.1.0/tests/unit/test_parser/test_manifest_extended.py +94 -0
- skillgate-1.1.0/tests/unit/test_parser/test_markdown.py +428 -0
- skillgate-1.1.0/tests/unit/test_parser/test_source.py +99 -0
- skillgate-1.1.0/tests/unit/test_parser/test_source_extended.py +39 -0
- skillgate-1.1.0/tests/unit/test_policy/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_policy/test_confidence.py +254 -0
- skillgate-1.1.0/tests/unit/test_policy/test_engine.py +307 -0
- skillgate-1.1.0/tests/unit/test_policy/test_loader.py +140 -0
- skillgate-1.1.0/tests/unit/test_policy/test_origin_policy.py +195 -0
- skillgate-1.1.0/tests/unit/test_policy/test_presets.py +90 -0
- skillgate-1.1.0/tests/unit/test_policy/test_schema.py +225 -0
- skillgate-1.1.0/tests/unit/test_quality/test_claim_ledger.py +33 -0
- skillgate-1.1.0/tests/unit/test_quality/test_deployment_profile_lock.py +10 -0
- skillgate-1.1.0/tests/unit/test_quality/test_dual_repo_release_contract.py +132 -0
- skillgate-1.1.0/tests/unit/test_quality/test_governance_scope_gate.py +60 -0
- skillgate-1.1.0/tests/unit/test_quality/test_install_docs_freshness.py +78 -0
- skillgate-1.1.0/tests/unit/test_quality/test_physical_extraction_workflow.py +58 -0
- skillgate-1.1.0/tests/unit/test_quality/test_public_export_gate.py +56 -0
- skillgate-1.1.0/tests/unit/test_quality/test_release_manifest.py +81 -0
- skillgate-1.1.0/tests/unit/test_quality/test_reliability_scorecard.py +41 -0
- skillgate-1.1.0/tests/unit/test_quality/test_split_ci_parity.py +10 -0
- skillgate-1.1.0/tests/unit/test_quality/test_supabase_compat_migration.py +207 -0
- skillgate-1.1.0/tests/unit/test_quality/test_supabase_sql_contracts.py +35 -0
- skillgate-1.1.0/tests/unit/test_reputation/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_reputation/test_models.py +104 -0
- skillgate-1.1.0/tests/unit/test_reputation/test_policy.py +68 -0
- skillgate-1.1.0/tests/unit/test_reputation/test_store.py +165 -0
- skillgate-1.1.0/tests/unit/test_reputation/test_verifier.py +119 -0
- skillgate-1.1.0/tests/unit/test_retroscan/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_retroscan/test_cli.py +165 -0
- skillgate-1.1.0/tests/unit/test_retroscan/test_engine.py +174 -0
- skillgate-1.1.0/tests/unit/test_retroscan/test_models.py +120 -0
- skillgate-1.1.0/tests/unit/test_retroscan/test_store.py +153 -0
- skillgate-1.1.0/tests/unit/test_rules/test_command.py +294 -0
- skillgate-1.1.0/tests/unit/test_rules/test_config.py +349 -0
- skillgate-1.1.0/tests/unit/test_rules/test_prompt.py +273 -0
- skillgate-1.1.0/tests/unit/test_scorer/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_scorer/test_engine.py +113 -0
- skillgate-1.1.0/tests/unit/test_scorer/test_severity.py +44 -0
- skillgate-1.1.0/tests/unit/test_scorer/test_weights.py +31 -0
- skillgate-1.1.0/tests/unit/test_signer/__init__.py +0 -0
- skillgate-1.1.0/tests/unit/test_signer/test_canonical.py +69 -0
- skillgate-1.1.0/tests/unit/test_signer/test_engine.py +181 -0
- skillgate-1.1.0/tests/unit/test_signer/test_keys.py +142 -0
- skillgate-1.1.0/tests/unit/test_signer/test_signing_scope.py +139 -0
- skillgate-1.1.0/tests/unit/test_version.py +85 -0
- skillgate-1.1.0/web-ui/.env.example +22 -0
- skillgate-1.1.0/web-ui/.eslintrc.json +7 -0
- skillgate-1.1.0/web-ui/.gitignore +36 -0
- skillgate-1.1.0/web-ui/.pa11yci.json +22 -0
- skillgate-1.1.0/web-ui/docs/README.md +7 -0
- skillgate-1.1.0/web-ui/e2e/a11y.spec.ts +58 -0
- skillgate-1.1.0/web-ui/e2e/docs.spec.ts +28 -0
- skillgate-1.1.0/web-ui/e2e/marketing.spec.ts +172 -0
- skillgate-1.1.0/web-ui/e2e/pricing-a11y-hardening.spec.ts +44 -0
- skillgate-1.1.0/web-ui/e2e/pricing-analytics.spec.ts +49 -0
- skillgate-1.1.0/web-ui/e2e/pricing-hardening.spec.ts +67 -0
- skillgate-1.1.0/web-ui/e2e/pricing-hardening.spec.ts-snapshots/pricing-desktop-runtime-chromium-darwin.png +0 -0
- skillgate-1.1.0/web-ui/e2e/pricing-hardening.spec.ts-snapshots/pricing-mobile-peek-mobile-darwin.png +0 -0
- skillgate-1.1.0/web-ui/lighthouserc.json +29 -0
- skillgate-1.1.0/web-ui/next.config.js +109 -0
- skillgate-1.1.0/web-ui/package-lock.json +12788 -0
- skillgate-1.1.0/web-ui/package.json +61 -0
- skillgate-1.1.0/web-ui/playwright.config.ts +38 -0
- skillgate-1.1.0/web-ui/postcss.config.js +6 -0
- skillgate-1.1.0/web-ui/public/favicon.svg +18 -0
- skillgate-1.1.0/web-ui/public/images/brandname.jpg +0 -0
- skillgate-1.1.0/web-ui/public/images/hero-shield.svg +50 -0
- skillgate-1.1.0/web-ui/public/images/logo.jpg +0 -0
- skillgate-1.1.0/web-ui/public/manifest.json +21 -0
- skillgate-1.1.0/web-ui/scripts/check-api-docs-sync.mjs +34 -0
- skillgate-1.1.0/web-ui/scripts/check-doc-links.mjs +59 -0
- skillgate-1.1.0/web-ui/scripts/check-doc-snippets.mjs +51 -0
- skillgate-1.1.0/web-ui/scripts/check-docs-health.mjs +64 -0
- skillgate-1.1.0/web-ui/scripts/generate-api-docs.mjs +49 -0
- skillgate-1.1.0/web-ui/scripts/lint-markdown.mjs +59 -0
- skillgate-1.1.0/web-ui/scripts/run-pa11y.sh +32 -0
- skillgate-1.1.0/web-ui/src/__tests__/analytics.test.ts +138 -0
- skillgate-1.1.0/web-ui/src/__tests__/api-client.test.ts +243 -0
- skillgate-1.1.0/web-ui/src/__tests__/auth-contract.test.ts +102 -0
- skillgate-1.1.0/web-ui/src/__tests__/pricing-experiment.test.ts +42 -0
- skillgate-1.1.0/web-ui/src/__tests__/pricing.test.ts +110 -0
- skillgate-1.1.0/web-ui/src/__tests__/seo.test.ts +45 -0
- skillgate-1.1.0/web-ui/src/__tests__/setup.ts +1 -0
- skillgate-1.1.0/web-ui/src/app/about/page.tsx +48 -0
- skillgate-1.1.0/web-ui/src/app/cancel/page.tsx +45 -0
- skillgate-1.1.0/web-ui/src/app/contact/page.tsx +137 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/api-keys/page.tsx +256 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/billing/page.tsx +167 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/layout.tsx +16 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/page.tsx +151 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/profile/page.tsx +196 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/scans/[scanId]/page.tsx +187 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/scans/page.tsx +223 -0
- skillgate-1.1.0/web-ui/src/app/dashboard/usage/page.tsx +109 -0
- skillgate-1.1.0/web-ui/src/app/docs/agent-gateway/page.tsx +150 -0
- skillgate-1.1.0/web-ui/src/app/docs/api/page.tsx +47 -0
- skillgate-1.1.0/web-ui/src/app/docs/artifacts/page.tsx +43 -0
- skillgate-1.1.0/web-ui/src/app/docs/cli/page.tsx +76 -0
- skillgate-1.1.0/web-ui/src/app/docs/enterprise/compliance/page.tsx +34 -0
- skillgate-1.1.0/web-ui/src/app/docs/enterprise/deployment/page.tsx +35 -0
- skillgate-1.1.0/web-ui/src/app/docs/enterprise/page.tsx +52 -0
- skillgate-1.1.0/web-ui/src/app/docs/enterprise/procurement/page.tsx +36 -0
- skillgate-1.1.0/web-ui/src/app/docs/enterprise/security/page.tsx +28 -0
- skillgate-1.1.0/web-ui/src/app/docs/get-started/page.tsx +60 -0
- skillgate-1.1.0/web-ui/src/app/docs/governance/page.tsx +74 -0
- skillgate-1.1.0/web-ui/src/app/docs/integrations/page.tsx +49 -0
- skillgate-1.1.0/web-ui/src/app/docs/intelligence/page.tsx +67 -0
- skillgate-1.1.0/web-ui/src/app/docs/layout.tsx +16 -0
- skillgate-1.1.0/web-ui/src/app/docs/legal/page.tsx +37 -0
- skillgate-1.1.0/web-ui/src/app/docs/migrations/page.tsx +43 -0
- skillgate-1.1.0/web-ui/src/app/docs/operations/page.tsx +42 -0
- skillgate-1.1.0/web-ui/src/app/docs/page.tsx +53 -0
- skillgate-1.1.0/web-ui/src/app/docs/product/page.tsx +98 -0
- skillgate-1.1.0/web-ui/src/app/docs/runtime-control/page.tsx +73 -0
- skillgate-1.1.0/web-ui/src/app/docs/security/page.tsx +40 -0
- skillgate-1.1.0/web-ui/src/app/docs/skillgate/commands/page.tsx +107 -0
- skillgate-1.1.0/web-ui/src/app/docs/skillgate/configuration/page.tsx +48 -0
- skillgate-1.1.0/web-ui/src/app/docs/skillgate/enforcement-boundaries/page.tsx +111 -0
- skillgate-1.1.0/web-ui/src/app/docs/skillgate/page.tsx +63 -0
- skillgate-1.1.0/web-ui/src/app/docs/skillgate/runtime-integrations/page.tsx +132 -0
- skillgate-1.1.0/web-ui/src/app/error.tsx +57 -0
- skillgate-1.1.0/web-ui/src/app/features/page.tsx +91 -0
- skillgate-1.1.0/web-ui/src/app/layout.tsx +66 -0
- skillgate-1.1.0/web-ui/src/app/legal/dpa-template/page.tsx +113 -0
- skillgate-1.1.0/web-ui/src/app/legal/incident-notice-template/page.tsx +69 -0
- skillgate-1.1.0/web-ui/src/app/legal/security-addendum-template/page.tsx +118 -0
- skillgate-1.1.0/web-ui/src/app/legal/subprocessors/page.tsx +75 -0
- skillgate-1.1.0/web-ui/src/app/login/page.tsx +19 -0
- skillgate-1.1.0/web-ui/src/app/not-found.tsx +30 -0
- skillgate-1.1.0/web-ui/src/app/og/route.tsx +171 -0
- skillgate-1.1.0/web-ui/src/app/page.tsx +19 -0
- skillgate-1.1.0/web-ui/src/app/pricing/page.tsx +88 -0
- skillgate-1.1.0/web-ui/src/app/privacy/page.tsx +109 -0
- skillgate-1.1.0/web-ui/src/app/roadmap/page.tsx +21 -0
- skillgate-1.1.0/web-ui/src/app/robots.ts +16 -0
- skillgate-1.1.0/web-ui/src/app/signup/page.tsx +19 -0
- skillgate-1.1.0/web-ui/src/app/sitemap.ts +82 -0
- skillgate-1.1.0/web-ui/src/app/success/page.tsx +53 -0
- skillgate-1.1.0/web-ui/src/app/terms/page.tsx +121 -0
- skillgate-1.1.0/web-ui/src/app/verify-email/page.tsx +18 -0
- skillgate-1.1.0/web-ui/src/components/auth/LoginForm.tsx +122 -0
- skillgate-1.1.0/web-ui/src/components/auth/SignupForm.tsx +147 -0
- skillgate-1.1.0/web-ui/src/components/auth/VerifyEmailPanel.tsx +133 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/Card.tsx +37 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/DashboardShell.tsx +34 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/DashboardTopbar.tsx +49 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/DataTable.tsx +104 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/EmptyState.tsx +24 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/InviteLinkCard.tsx +67 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/PageHeader.tsx +22 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/Sidebar.tsx +130 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/StatCard.tsx +31 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/TierGate.tsx +48 -0
- skillgate-1.1.0/web-ui/src/components/dashboard/api-keys/CreateKeyForm.tsx +117 -0
- skillgate-1.1.0/web-ui/src/components/docs/CodeBlock.tsx +79 -0
- skillgate-1.1.0/web-ui/src/components/docs/DocsPage.tsx +62 -0
- skillgate-1.1.0/web-ui/src/components/docs/DocsSidebar.tsx +80 -0
- skillgate-1.1.0/web-ui/src/components/docs/DocsToc.tsx +96 -0
- skillgate-1.1.0/web-ui/src/components/docs/InstallWizard.test.tsx +82 -0
- skillgate-1.1.0/web-ui/src/components/docs/InstallWizard.tsx +275 -0
- skillgate-1.1.0/web-ui/src/components/docs/IntegrationTabs.tsx +61 -0
- skillgate-1.1.0/web-ui/src/components/hero/ThreatTear.tsx +193 -0
- skillgate-1.1.0/web-ui/src/components/layout/Footer.tsx +127 -0
- skillgate-1.1.0/web-ui/src/components/layout/Header.tsx +385 -0
- skillgate-1.1.0/web-ui/src/components/providers/AnalyticsProvider.tsx +18 -0
- skillgate-1.1.0/web-ui/src/components/providers/AuthProvider.tsx +179 -0
- skillgate-1.1.0/web-ui/src/components/providers/ErrorBoundary.tsx +82 -0
- skillgate-1.1.0/web-ui/src/components/providers/QueryProvider.tsx +30 -0
- skillgate-1.1.0/web-ui/src/components/sections/CTASection.tsx +63 -0
- skillgate-1.1.0/web-ui/src/components/sections/FeaturesSection.tsx +179 -0
- skillgate-1.1.0/web-ui/src/components/sections/HeroSection.tsx +125 -0
- skillgate-1.1.0/web-ui/src/components/sections/PricingSection.test.tsx +228 -0
- skillgate-1.1.0/web-ui/src/components/sections/PricingSection.tsx +1080 -0
- skillgate-1.1.0/web-ui/src/components/sections/RoadmapSection.tsx +293 -0
- skillgate-1.1.0/web-ui/src/components/sections/SocialProofSection.tsx +50 -0
- skillgate-1.1.0/web-ui/src/components/ui/Badge.tsx +31 -0
- skillgate-1.1.0/web-ui/src/components/ui/Button.tsx +56 -0
- skillgate-1.1.0/web-ui/src/components/ui/Input.tsx +59 -0
- skillgate-1.1.0/web-ui/src/components/ui/Modal.tsx +69 -0
- skillgate-1.1.0/web-ui/src/components/ui/Skeleton.tsx +18 -0
- skillgate-1.1.0/web-ui/src/generated/api-reference.ts +94 -0
- skillgate-1.1.0/web-ui/src/lib/analytics.ts +150 -0
- skillgate-1.1.0/web-ui/src/lib/api-client.ts +579 -0
- skillgate-1.1.0/web-ui/src/lib/auth.ts +64 -0
- skillgate-1.1.0/web-ui/src/lib/docs-links.ts +60 -0
- skillgate-1.1.0/web-ui/src/lib/docs-nav.ts +170 -0
- skillgate-1.1.0/web-ui/src/lib/hooks/use-auth-contract.ts +58 -0
- skillgate-1.1.0/web-ui/src/lib/hooks/use-dashboard.ts +164 -0
- skillgate-1.1.0/web-ui/src/lib/install-spec.ts +35 -0
- skillgate-1.1.0/web-ui/src/lib/pricing-experiment.ts +83 -0
- skillgate-1.1.0/web-ui/src/lib/pricing.ts +370 -0
- skillgate-1.1.0/web-ui/src/lib/roadmap-fallback.ts +55 -0
- skillgate-1.1.0/web-ui/src/lib/seo.ts +200 -0
- skillgate-1.1.0/web-ui/src/lib/types/dashboard.ts +98 -0
- skillgate-1.1.0/web-ui/src/lib/utils.ts +7 -0
- skillgate-1.1.0/web-ui/src/middleware.ts +52 -0
- skillgate-1.1.0/web-ui/src/styles/globals.css +159 -0
- skillgate-1.1.0/web-ui/tailwind.config.js +67 -0
- skillgate-1.1.0/web-ui/tsconfig.json +24 -0
- skillgate-1.1.0/web-ui/vercel.json +30 -0
- skillgate-1.1.0/web-ui/vitest.config.ts +25 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: local-ci-gate-pack
|
|
3
|
+
description: Run local production-go gate validation for SkillGate with consolidated artifacts (lint, typecheck, tests, packaging, migrations, security, and governance decision gates) in fail-closed mode.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Local CI Gate Pack
|
|
7
|
+
|
|
8
|
+
Use this skill when asked to validate production readiness locally or reproduce CI-equivalent checks end-to-end.
|
|
9
|
+
|
|
10
|
+
## Command
|
|
11
|
+
|
|
12
|
+
From repo root:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
./venv/bin/python scripts/quality/run_local_ci_gate.py --offline-safe
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## What It Validates
|
|
19
|
+
|
|
20
|
+
1. Lint + formatting + quality script gates
|
|
21
|
+
2. Strict typing (`mypy --strict`)
|
|
22
|
+
3. Test suite
|
|
23
|
+
4. SLO gates
|
|
24
|
+
5. Reliability scorecard generation
|
|
25
|
+
6. Packaging smoke + build + twine metadata check (`--no-isolation`)
|
|
26
|
+
7. API command matrix
|
|
27
|
+
8. Web UI check/build
|
|
28
|
+
9. Alembic upgrade/downgrade/upgrade against local DB URL
|
|
29
|
+
10. Security checks (`pip-audit`, `detect-secrets`)
|
|
30
|
+
11. Governance decision-gate checks
|
|
31
|
+
|
|
32
|
+
## Artifacts
|
|
33
|
+
|
|
34
|
+
- `docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-<YYYY-MM-DD>.log`
|
|
35
|
+
- `docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-<YYYY-MM-DD>.json`
|
|
36
|
+
- `docs/section-11-risk-mitigation/artifacts/consolidated-release-audit-<YYYY-MM-DD>.md`
|
|
37
|
+
|
|
38
|
+
## Fail-Closed Rules
|
|
39
|
+
|
|
40
|
+
- Do not skip a failing step and continue.
|
|
41
|
+
- Do not install missing tools inside the gate command.
|
|
42
|
+
- If offline/tooling constraints block `pip-audit` or `detect-secrets`, treat as gate failure and resolve prerequisites first.
|
|
43
|
+
- Use `--skip-web-ui` only for scoped backend iteration, not production-go adjudication.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-hardening-gate
|
|
3
|
+
description: Run a strict production hardening and product-outcome gate for SkillGate: governance enforcement proof, evidence-backed claims, conversion path readiness, moat clarity, and GO/NO-GO verdict based on product trust and revenue-aligned signals.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Hardening Gate
|
|
7
|
+
|
|
8
|
+
Use this skill when asked for production readiness, release adjudication, or strict GO/NO-GO.
|
|
9
|
+
|
|
10
|
+
Decision posture:
|
|
11
|
+
|
|
12
|
+
- Optimize for product outcomes, not owner preference and not agent convenience.
|
|
13
|
+
- Prefer decisions that increase defensible moat, trust, and conversion.
|
|
14
|
+
- Reject work that adds features without strengthening enforcement, evidence, or distribution.
|
|
15
|
+
|
|
16
|
+
## Scope
|
|
17
|
+
|
|
18
|
+
Validate these gates in order (fail-closed):
|
|
19
|
+
1. Claim-ledger hard gate + docs launch controls
|
|
20
|
+
2. Tier-gating proof paths (`hunt`/`retroscan` CLI + API)
|
|
21
|
+
3. Enterprise trust controls (signed token presence, subject binding, mode/authority lock abuse tests)
|
|
22
|
+
4. Performance & latency SLO gates (p50/p95/p99 + cold-start where applicable)
|
|
23
|
+
5. Resilience & degradation gates (timeouts, retries, circuit breakers, backpressure, graceful failure)
|
|
24
|
+
6. Observability & supportability gates (structured logs, traces, metrics, runbooks, on-call debug flow)
|
|
25
|
+
7. CLI/API matrix (including `saas`, `private_relay`, `airgap` coverage)
|
|
26
|
+
8. Data integrity & migration gates (schema migrations, idempotency, replay safety)
|
|
27
|
+
9. Packaging/release hardening (wheel + sdist + install smoke + publish rehearsal)
|
|
28
|
+
10. Lint/type checks
|
|
29
|
+
11. Product-outcome gates (moat clarity, SEO intent fit, CTA conversion path)
|
|
30
|
+
12. Final self-review + reflection + GO/NO-GO checklist
|
|
31
|
+
|
|
32
|
+
### Product-Outcome Gates (mandatory)
|
|
33
|
+
|
|
34
|
+
1. Moat gate:
|
|
35
|
+
- Messaging must define SkillGate as governance/enforcement/evidence control plane, not scanner clone.
|
|
36
|
+
- Write-path approvals and signed evidence must be visibly central in product narrative.
|
|
37
|
+
|
|
38
|
+
2. SEO intent gate:
|
|
39
|
+
- Core pages must target high-intent phrases:
|
|
40
|
+
`AI code security governance`, `secure AI coding pipeline`, `AI coding policy enforcement`, `audit evidence for AI-generated code`.
|
|
41
|
+
- Claims on these pages must map to proof artifacts.
|
|
42
|
+
|
|
43
|
+
3. CTA gate:
|
|
44
|
+
- Primary CTA must point to runnable first proof flow:
|
|
45
|
+
`scan -> policy decision -> approval (if required) -> signed evidence pack`.
|
|
46
|
+
- CTA path must be testable and reproducible from docs.
|
|
47
|
+
|
|
48
|
+
4. Revenue proxy gate:
|
|
49
|
+
- Track and report:
|
|
50
|
+
`proof-pack generation rate`, `high-risk write block rate`, `approval-gated write rate`, `claim-to-proof coverage`.
|
|
51
|
+
- If metrics are missing, release is `NO-GO`.
|
|
52
|
+
|
|
53
|
+
## Required Commands (minimum)
|
|
54
|
+
|
|
55
|
+
Run from repo root:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
./venv/bin/pytest -m slow tests/slo/ -q
|
|
59
|
+
|
|
60
|
+
# Performance & latency: require repeatable benchmarks (no network noise)
|
|
61
|
+
./venv/bin/pytest -m perf tests/perf/ -q -rs
|
|
62
|
+
python scripts/perf/bench_cli.py --runs 10 --json /tmp/skillgate-perf-cli.json
|
|
63
|
+
python scripts/perf/bench_api.py --runs 10 --json /tmp/skillgate-perf-api.json
|
|
64
|
+
|
|
65
|
+
# Resilience: failure-mode tests (timeouts/retries/backpressure)
|
|
66
|
+
./venv/bin/pytest -m resilience tests/resilience/ -q -rs
|
|
67
|
+
|
|
68
|
+
# Observability: log/trace/metrics schema checks
|
|
69
|
+
./venv/bin/pytest tests/observability/ -q
|
|
70
|
+
|
|
71
|
+
python scripts/quality/check_claim_ledger.py
|
|
72
|
+
./venv/bin/pytest tests/docs/test_pricing_launch_controls.py -q
|
|
73
|
+
./venv/bin/pytest tests/unit/test_hunt/test_cli.py tests/unit/test_retroscan/test_cli.py -q
|
|
74
|
+
./venv/bin/pytest tests/unit/test_api/test_hunt_api.py tests/unit/test_api/test_retroscan_api.py -q
|
|
75
|
+
./venv/bin/pytest tests/unit/test_api/test_entitlements_api.py tests/unit/test_entitlement/test_usage_authority.py tests/unit/test_cli/test_entitlement_gates.py -q
|
|
76
|
+
./venv/bin/pytest tests/e2e/test_cli_command_matrix.py -q
|
|
77
|
+
./venv/bin/pytest tests/e2e/test_api_command_matrix.py -q
|
|
78
|
+
|
|
79
|
+
# Debuggability/support: verify runbooks & operational docs exist and render
|
|
80
|
+
./venv/bin/pytest tests/docs/test_runbooks_present.py -q
|
|
81
|
+
./venv/bin/pytest tests/docs/test_troubleshooting_render.py -q
|
|
82
|
+
|
|
83
|
+
./venv/bin/pytest -m slow tests/e2e/test_packaging_release.py -q -rs
|
|
84
|
+
python -m build --sdist --wheel --outdir /tmp/skillgate-dist-check
|
|
85
|
+
python -m twine check /tmp/skillgate-dist-check/*
|
|
86
|
+
./venv/bin/ruff check .
|
|
87
|
+
./venv/bin/mypy --strict skillgate/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Fail-Closed Rules
|
|
91
|
+
|
|
92
|
+
- Any skipped test in packaging/perf/resilience gates is a red flag unless explicitly documented and approved.
|
|
93
|
+
- `sdist` must produce a tarball; do not allow skip-based pass.
|
|
94
|
+
- Matrix coverage must include positive + negative + regression paths.
|
|
95
|
+
- Non-local runtime paths must fail-close when signed entitlement token/subject checks fail.
|
|
96
|
+
- Do not mark GO if any required gate is missing from CI.
|
|
97
|
+
- Do not mark GO if moat messaging is scanner-like or if CTA lacks proof-backed flow.
|
|
98
|
+
- Do not mark GO if claims exist without artifact links.
|
|
99
|
+
|
|
100
|
+
### Performance/Latency
|
|
101
|
+
- Require baseline benchmarks to be reproducible (≥ 10 runs) and stored as artifacts.
|
|
102
|
+
- Require explicit thresholds for p95 latency and error rate (documented in repo); failing thresholds is NO-GO.
|
|
103
|
+
- Any performance regression vs last release baseline must be explained (root cause + mitigation or rollback plan).
|
|
104
|
+
|
|
105
|
+
### Resilience
|
|
106
|
+
- Verify timeouts are set (no unbounded waits) and retries are bounded with jitter/backoff.
|
|
107
|
+
- Verify graceful degradation paths exist (partial results, cached reads, fail-open is NOT allowed for security gates).
|
|
108
|
+
- Any single point of failure in critical paths must have mitigation (redundancy, circuit breaker, or clear operational workaround).
|
|
109
|
+
|
|
110
|
+
### Observability/Supportability
|
|
111
|
+
- Logs must be structured and include correlation IDs for all request/command executions.
|
|
112
|
+
- Tracing must identify top-level operations (`hunt`, `retroscan`, entitlements verification) with spans.
|
|
113
|
+
- Metrics must include: request rate, error rate, latency (p50/p95/p99), saturation signals, and queue depth where applicable.
|
|
114
|
+
- A runbook must exist for each critical service/worker, including: how to reproduce, how to collect evidence, and rollback steps.
|
|
115
|
+
|
|
116
|
+
## Self-Review + Reflection (required)
|
|
117
|
+
|
|
118
|
+
Before issuing GO/NO-GO, perform a brief self-audit and record it in the output:
|
|
119
|
+
|
|
120
|
+
1. **Correctness:** Did we validate the intended invariants (entitlements, tier gating, claim-ledger) with negative tests?
|
|
121
|
+
2. **Performance:** What are the p50/p95/p99 numbers for CLI and API? Any regression vs baseline? Why?
|
|
122
|
+
3. **Resilience:** What happens under dependency failure (timeouts, 5xx, slow downstream)? Do we degrade safely?
|
|
123
|
+
4. **Supportability:** Could on-call debug this in < 15 minutes using logs/traces/runbooks? What evidence proves it?
|
|
124
|
+
5. **Scalability:** What is the scaling bottleneck (CPU/memory/IO/queue/db)? What is the mitigation plan?
|
|
125
|
+
6. **Maintainability:** Are modules cohesive, interfaces stable, and configuration explicit? Any tech debt that blocks GA?
|
|
126
|
+
7. **Product Advantage:** Why is this hard for scanner-first competitors to copy quickly?
|
|
127
|
+
8. **Distribution Readiness:** Are SEO intent pages + CTA flow aligned to the shipped proof path?
|
|
128
|
+
|
|
129
|
+
If any answer is unclear, assume NO-GO until clarified with evidence.
|
|
130
|
+
|
|
131
|
+
## Output Contract
|
|
132
|
+
|
|
133
|
+
Return:
|
|
134
|
+
1. Findings ordered by severity with `file:line` and a one-line impact.
|
|
135
|
+
2. GO/NO-GO checklist with explicit green/red status per gate (Scope items 1–12).
|
|
136
|
+
3. Performance snapshot table (p50/p95/p99, error rate, baseline comparison, environment notes).
|
|
137
|
+
4. Resilience snapshot (tested failure modes + observed behavior + any gaps).
|
|
138
|
+
5. Supportability snapshot (log/trace evidence, runbook links/paths, and fastest debug path).
|
|
139
|
+
6. Product-outcome snapshot (`moat`, `SEO intent fit`, `CTA readiness`, `revenue proxies`) with pass/fail.
|
|
140
|
+
7. One-line final verdict: `GO` or `NO-GO`.
|
|
141
|
+
8. No mandatory environment variables to be placed in code; all to be mentioned in .env or .env.example with clear instructions. No fallbacks for mandatory environment variables that bypass checks.
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
# SkillGate Environment Configuration
|
|
2
|
+
# Copy this file to .env and fill in your values
|
|
3
|
+
# DO NOT commit .env to version control
|
|
4
|
+
|
|
5
|
+
# ============================================================================
|
|
6
|
+
# DEPLOYMENT ENVIRONMENT
|
|
7
|
+
# ============================================================================
|
|
8
|
+
|
|
9
|
+
# Environment: development, staging, production
|
|
10
|
+
# CRITICAL: production/staging enforces security invariants (signed keys, no demo OAuth, etc.)
|
|
11
|
+
# MANDATORY
|
|
12
|
+
SKILLGATE_ENV=development
|
|
13
|
+
|
|
14
|
+
# Authentication provider mode
|
|
15
|
+
# Allowed: local | supabase
|
|
16
|
+
# MANDATORY
|
|
17
|
+
SKILLGATE_AUTH_PROVIDER=local
|
|
18
|
+
|
|
19
|
+
# ============================================================================
|
|
20
|
+
# SECURITY SECRETS (REQUIRED IN PRODUCTION)
|
|
21
|
+
# ============================================================================
|
|
22
|
+
|
|
23
|
+
# {
|
|
24
|
+
# echo "SKILLGATE_JWT_SECRET=$(openssl rand -hex 64)"
|
|
25
|
+
# echo "SKILLGATE_API_KEY_SECRET=$(openssl rand -hex 64)"
|
|
26
|
+
# echo "SKILLGATE_API_KEY_PEPPER=$(openssl rand -hex 64)"
|
|
27
|
+
# echo "SKILLGATE_REFRESH_TOKEN_PEPPER=$(openssl rand -hex 64)"
|
|
28
|
+
# echo "SKILLGATE_ADMIN_KEY=sg_admin_$(openssl rand -hex 32)"
|
|
29
|
+
# } >> .env.production
|
|
30
|
+
|
|
31
|
+
# JWT signing secret for access tokens (≥64 chars, secure random)
|
|
32
|
+
# Generate with: openssl rand -hex 64
|
|
33
|
+
# MANDATORY
|
|
34
|
+
SKILLGATE_JWT_SECRET=your-jwt-secret-here-minimum-64-characters-use-openssl-rand-hex-64
|
|
35
|
+
|
|
36
|
+
# API key HMAC signing secret for cryptographic validation (≥64 chars)
|
|
37
|
+
# SECURITY FIX 16.33: Used for signed API key format sg_v1_*
|
|
38
|
+
# MANDATORY
|
|
39
|
+
SKILLGATE_API_KEY_SECRET=your-api-key-secret-here-minimum-64-characters-secure-random
|
|
40
|
+
|
|
41
|
+
# API key hashing pepper (≥64 chars, secure random)
|
|
42
|
+
# MANDATORY
|
|
43
|
+
SKILLGATE_API_KEY_PEPPER=your-api-key-pepper-here-minimum-64-characters-secure-random
|
|
44
|
+
|
|
45
|
+
# Refresh token hashing pepper (≥64 chars, secure random)
|
|
46
|
+
# MANDATORY
|
|
47
|
+
SKILLGATE_REFRESH_TOKEN_PEPPER=your-refresh-token-pepper-here-minimum-64-characters-secure-random
|
|
48
|
+
|
|
49
|
+
# Admin API key for privileged operations (webhook replay, reconciliation, etc.)
|
|
50
|
+
# MANDATORY for hosted admin/replay endpoints
|
|
51
|
+
SKILLGATE_ADMIN_KEY=your-admin-key-here-secure-random
|
|
52
|
+
|
|
53
|
+
# ============================================================================
|
|
54
|
+
# EMAIL VERIFICATION (RESEND)
|
|
55
|
+
# ============================================================================
|
|
56
|
+
|
|
57
|
+
# Resend API key for transactional emails (verification, password-reset notifications)
|
|
58
|
+
# Get from: https://resend.com/api-keys
|
|
59
|
+
# RESEND_API_KEY=re_your_resend_api_key_here
|
|
60
|
+
|
|
61
|
+
# Verified sender email/domain in Resend
|
|
62
|
+
# Example: no-reply@yourdomain.com
|
|
63
|
+
# SKILLGATE_EMAIL_FROM=no-reply@skillgate.io
|
|
64
|
+
|
|
65
|
+
# Public web app base URL used to build verification links
|
|
66
|
+
# SKILLGATE_WEB_BASE_URL=https://app.skillgate.io
|
|
67
|
+
|
|
68
|
+
# ============================================================================
|
|
69
|
+
# DATABASE CONFIGURATION
|
|
70
|
+
# ============================================================================
|
|
71
|
+
|
|
72
|
+
# Primary database connection string
|
|
73
|
+
# MANDATORY
|
|
74
|
+
SKILLGATE_DATABASE_URL=postgresql+asyncpg://skillgate:skillgate@localhost:5432/skillgate
|
|
75
|
+
|
|
76
|
+
# Optional read replica for read-heavy operations
|
|
77
|
+
# SKILLGATE_READ_REPLICA_URL=postgresql+asyncpg://skillgate:skillgate@replica:5432/skillgate
|
|
78
|
+
|
|
79
|
+
# Database connection pool settings
|
|
80
|
+
# SKILLGATE_DB_POOL_SIZE=20
|
|
81
|
+
# SKILLGATE_DB_MAX_OVERFLOW=10
|
|
82
|
+
|
|
83
|
+
# Disable DB pooling (useful for one-shot scripts)
|
|
84
|
+
# OPTIONAL
|
|
85
|
+
# SKILLGATE_DISABLE_DB_POOL=false
|
|
86
|
+
|
|
87
|
+
# Auto-initialize database on startup (development only)
|
|
88
|
+
# SKILLGATE_AUTO_INIT_DB=false
|
|
89
|
+
|
|
90
|
+
# ============================================================================
|
|
91
|
+
# REDIS CONFIGURATION
|
|
92
|
+
# ============================================================================
|
|
93
|
+
|
|
94
|
+
# Redis connection string for caching, rate limiting, device codes
|
|
95
|
+
# MANDATORY
|
|
96
|
+
SKILLGATE_REDIS_URL=redis://localhost:6379/0
|
|
97
|
+
|
|
98
|
+
# ============================================================================
|
|
99
|
+
# CORS & WEB SECURITY
|
|
100
|
+
# ============================================================================
|
|
101
|
+
|
|
102
|
+
# Allowed CORS origins (comma-separated)
|
|
103
|
+
# Production: set to your frontend domain(s)
|
|
104
|
+
# Development: localhost with various ports
|
|
105
|
+
# MANDATORY
|
|
106
|
+
SKILLGATE_CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost:3001,http://127.0.0.1:3001,https://app.skillgate.io
|
|
107
|
+
|
|
108
|
+
# Allow credentials in CORS requests
|
|
109
|
+
# SKILLGATE_CORS_ALLOW_CREDENTIALS=true
|
|
110
|
+
|
|
111
|
+
# Enable HSTS (HTTP Strict Transport Security) headers
|
|
112
|
+
# Auto-enabled in production/staging
|
|
113
|
+
# SKILLGATE_ENABLE_HSTS=true
|
|
114
|
+
|
|
115
|
+
# ============================================================================
|
|
116
|
+
# OAUTH CONFIGURATION
|
|
117
|
+
# ============================================================================
|
|
118
|
+
|
|
119
|
+
# Enable OAuth authentication (Google, GitHub)
|
|
120
|
+
# SKILLGATE_ENABLE_OAUTH=false
|
|
121
|
+
|
|
122
|
+
# OAuth provider credentials (when OAuth is enabled)
|
|
123
|
+
# GOOGLE_CLIENT_ID=your-google-client-id
|
|
124
|
+
# GOOGLE_CLIENT_SECRET=your-google-client-secret
|
|
125
|
+
# GITHUB_CLIENT_ID=your-github-client-id
|
|
126
|
+
# GITHUB_CLIENT_SECRET=your-github-client-secret
|
|
127
|
+
|
|
128
|
+
# ============================================================================
|
|
129
|
+
# SUPABASE AUTH PROVIDER (REQUIRED WHEN SKILLGATE_AUTH_PROVIDER=supabase)
|
|
130
|
+
# ============================================================================
|
|
131
|
+
|
|
132
|
+
# Supabase project base URL
|
|
133
|
+
# REQUIRED for supabase auth provider
|
|
134
|
+
# SUPABASE_URL=https://your-project.supabase.co
|
|
135
|
+
|
|
136
|
+
# Supabase anonymous key (client-side key)
|
|
137
|
+
# REQUIRED for supabase auth provider
|
|
138
|
+
# SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
|
|
139
|
+
|
|
140
|
+
# Supabase service role key (server-only secret)
|
|
141
|
+
# REQUIRED for supabase auth provider
|
|
142
|
+
# SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
|
|
143
|
+
|
|
144
|
+
# Supabase JWT verification mode (choose one)
|
|
145
|
+
# REQUIRED for supabase auth provider in production/staging
|
|
146
|
+
# Option A: shared secret
|
|
147
|
+
# SUPABASE_JWT_SECRET=your-supabase-jwt-secret
|
|
148
|
+
# Option B: JWKS URL (auto-derives from SUPABASE_URL if omitted)
|
|
149
|
+
# SUPABASE_JWKS_URL=https://your-project.supabase.co/auth/v1/keys
|
|
150
|
+
|
|
151
|
+
# Additional outbound host allowlist for Supabase client egress policy
|
|
152
|
+
# OPTIONAL
|
|
153
|
+
# SKILLGATE_SUPABASE_EGRESS_ALLOWLIST=api.supabase.co
|
|
154
|
+
|
|
155
|
+
# ============================================================================
|
|
156
|
+
# STRIPE PAYMENT INTEGRATION
|
|
157
|
+
# ============================================================================
|
|
158
|
+
|
|
159
|
+
# Stripe API secret key
|
|
160
|
+
# Get from: https://dashboard.stripe.com/apikeys
|
|
161
|
+
# MANDATORY for payments routes
|
|
162
|
+
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_here
|
|
163
|
+
|
|
164
|
+
# Stripe webhook signing secret
|
|
165
|
+
# Get from: https://dashboard.stripe.com/webhooks
|
|
166
|
+
# MANDATORY for webhook routes
|
|
167
|
+
STRIPE_WEBHOOK_SECRET=whsec_your_stripe_webhook_secret_here
|
|
168
|
+
|
|
169
|
+
# Stripe price IDs for subscription tiers (monthly and annual)
|
|
170
|
+
# Get from: https://dashboard.stripe.com/products
|
|
171
|
+
# Industry standard: ~17% discount on annual (2 months free)
|
|
172
|
+
STRIPE_PRICE_PRO_MONTHLY=price_pro_monthly_id
|
|
173
|
+
STRIPE_PRICE_PRO_YEARLY=price_pro_yearly_id
|
|
174
|
+
STRIPE_PRICE_TEAM_MONTHLY=price_team_monthly_id
|
|
175
|
+
STRIPE_PRICE_TEAM_YEARLY=price_team_yearly_id
|
|
176
|
+
STRIPE_PRICE_ENT_MONTHLY=price_enterprise_monthly_id
|
|
177
|
+
STRIPE_PRICE_ENT_YEARLY=price_enterprise_yearly_id
|
|
178
|
+
|
|
179
|
+
# Legacy single-price aliases (deprecated; kept for backward compatibility)
|
|
180
|
+
# OPTIONAL
|
|
181
|
+
# STRIPE_PRICE_PRO=price_pro_monthly_id
|
|
182
|
+
# STRIPE_PRICE_TEAM=price_team_monthly_id
|
|
183
|
+
# STRIPE_PRICE_ENT=price_enterprise_monthly_id
|
|
184
|
+
|
|
185
|
+
# Beta switch: force backend pricing catalog paid-tier CTAs to "Get Started Free"
|
|
186
|
+
# and route users through free onboarding while Stripe is validated.
|
|
187
|
+
# SKILLGATE_PRICING_BETA_FREE_CTA=false
|
|
188
|
+
|
|
189
|
+
# ============================================================================
|
|
190
|
+
# INTEGRATIONS & ALERTING
|
|
191
|
+
# ============================================================================
|
|
192
|
+
|
|
193
|
+
# Default Slack webhook URL for scan alerts
|
|
194
|
+
# SECURITY FIX 16.32: Still validated against allowlist
|
|
195
|
+
# SKILLGATE_SLACK_WEBHOOK=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
|
|
196
|
+
|
|
197
|
+
# Entitlement incident webhook destination
|
|
198
|
+
# OPTIONAL
|
|
199
|
+
# SKILLGATE_ENTITLEMENT_INCIDENT_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/ENTITLEMENT/WEBHOOK
|
|
200
|
+
|
|
201
|
+
# ============================================================================
|
|
202
|
+
# LLM EXPLAINER (OPTIONAL)
|
|
203
|
+
# ============================================================================
|
|
204
|
+
|
|
205
|
+
# Anthropic API key for Claude-based explanations
|
|
206
|
+
# ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here
|
|
207
|
+
|
|
208
|
+
# Anthropic base URL override
|
|
209
|
+
# OPTIONAL
|
|
210
|
+
# ANTHROPIC_BASE_URL=https://api.anthropic.com
|
|
211
|
+
|
|
212
|
+
# OpenAI API key for GPT-based explanations
|
|
213
|
+
# OPENAI_API_KEY=sk-your-openai-key-here
|
|
214
|
+
|
|
215
|
+
# OpenAI base URL override
|
|
216
|
+
# OPTIONAL
|
|
217
|
+
# OPENAI_BASE_URL=https://api.openai.com
|
|
218
|
+
|
|
219
|
+
# Custom explanation provider controls (optional)
|
|
220
|
+
# Provider: azure-openai | groq | ollama
|
|
221
|
+
# SKILLGATE_EXPLAIN_CUSTOM_PROVIDER=
|
|
222
|
+
# SKILLGATE_EXPLAIN_CUSTOM_BASE_URL=
|
|
223
|
+
# SKILLGATE_EXPLAIN_CUSTOM_MODEL=
|
|
224
|
+
# SKILLGATE_EXPLAIN_CUSTOM_DEPLOYMENT=
|
|
225
|
+
# SKILLGATE_EXPLAIN_AZURE_API_VERSION=2024-02-15-preview
|
|
226
|
+
# AZURE_OPENAI_API_KEY=
|
|
227
|
+
# GROQ_API_KEY=
|
|
228
|
+
# SKILLGATE_EXPLAIN_EGRESS=false
|
|
229
|
+
# SKILLGATE_EXPLAIN_ENDPOINT_ALLOWLIST=api.openai.com,api.anthropic.com
|
|
230
|
+
# SKILLGATE_EXPLAIN_PROVIDER_TIMEOUT_S=8
|
|
231
|
+
# SKILLGATE_EXPLAIN_PROVIDER_RETRIES=2
|
|
232
|
+
|
|
233
|
+
# ============================================================================
|
|
234
|
+
# OBSERVABILITY & TELEMETRY
|
|
235
|
+
# ============================================================================
|
|
236
|
+
|
|
237
|
+
# Enable OpenTelemetry instrumentation
|
|
238
|
+
# SKILLGATE_OTEL_ENABLED=false
|
|
239
|
+
|
|
240
|
+
# OpenTelemetry exporter endpoint
|
|
241
|
+
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
|
|
242
|
+
|
|
243
|
+
# ============================================================================
|
|
244
|
+
# CLI CONFIGURATION
|
|
245
|
+
# ============================================================================
|
|
246
|
+
|
|
247
|
+
# API endpoint for CLI commands (auth, scan upload, etc.)
|
|
248
|
+
# SKILLGATE_API_URL=https://api.skillgate.io
|
|
249
|
+
|
|
250
|
+
# API key for CLI authentication (alternative to web login)
|
|
251
|
+
# SKILLGATE_API_KEY=sg_v1_your_signed_api_key_here
|
|
252
|
+
|
|
253
|
+
# Local/dev only: have UI-generated API keys use tier-encoded legacy format
|
|
254
|
+
# (sg_free_*, sg_pro_*, sg_team_*, sg_ent_*) compatible with local CLI resolver.
|
|
255
|
+
# Ignored unless SKILLGATE_ENV is development/dev/local.
|
|
256
|
+
# SKILLGATE_LOCAL_UI_TIER_KEYS=false
|
|
257
|
+
# SKILLGATE_LOCAL_UI_DEFAULT_TIER=free
|
|
258
|
+
|
|
259
|
+
# CLI mode flag for CI-oriented behavior
|
|
260
|
+
# OPTIONAL
|
|
261
|
+
# SKILLGATE_CI_MODE=false
|
|
262
|
+
|
|
263
|
+
# Entitlement enforcement mode:
|
|
264
|
+
# - local: local tier + local quota cache (dev/default)
|
|
265
|
+
# - saas: hosted authority endpoint for usage/entitlements
|
|
266
|
+
# - private_relay: enterprise internal authority endpoint (no direct public egress from CI)
|
|
267
|
+
# - airgap: signed/offline entitlement flow
|
|
268
|
+
# SKILLGATE_ENTITLEMENT_MODE=local
|
|
269
|
+
|
|
270
|
+
# Non-local authority endpoint for saas/private_relay mode.
|
|
271
|
+
# Expected consume endpoint: {url}/v1/entitlements/consume-scan
|
|
272
|
+
# SKILLGATE_ENTITLEMENT_AUTHORITY_URL=https://api.skillgate.io
|
|
273
|
+
|
|
274
|
+
# On-prem entitlement relay endpoint and auth (server runtime)
|
|
275
|
+
# OPTIONAL (used for private enterprise entitlement relay mode)
|
|
276
|
+
# SKILLGATE_ONPREM_ENTITLEMENT_URL=https://entitlement.internal
|
|
277
|
+
# SKILLGATE_ONPREM_ENTITLEMENT_TOKEN=internal-shared-token
|
|
278
|
+
# SKILLGATE_ONPREM_ENTITLEMENT_TIMEOUT=3.0
|
|
279
|
+
# SKILLGATE_ONPREM_FAIL_OPEN=true
|
|
280
|
+
|
|
281
|
+
# Authority shared secret for hosted entitlement consume endpoint
|
|
282
|
+
# REQUIRED when acting as entitlement authority
|
|
283
|
+
# SKILLGATE_ENTITLEMENT_AUTHORITY_TOKEN=
|
|
284
|
+
|
|
285
|
+
# Runtime lock guards (optional policy hardening)
|
|
286
|
+
# SKILLGATE_ENTITLEMENT_MODE_LOCK=local
|
|
287
|
+
# SKILLGATE_ENTITLEMENT_AUTHORITY_URL_LOCK=https://api.skillgate.io
|
|
288
|
+
|
|
289
|
+
# Optional timeout for authority calls (seconds)
|
|
290
|
+
# SKILLGATE_ENTITLEMENT_AUTHORITY_TIMEOUT_SECONDS=3
|
|
291
|
+
|
|
292
|
+
# Optional signed entitlement payload preference in non-local modes
|
|
293
|
+
# SKILLGATE_ENTITLEMENT_TOKEN=base64url_payload.signature_hex
|
|
294
|
+
# SKILLGATE_ENTITLEMENT_PUBLIC_KEY=ed25519_public_key_hex
|
|
295
|
+
# Optional key ring for multi-key verification
|
|
296
|
+
# SKILLGATE_ENTITLEMENT_PUBLIC_KEYS=key1hex,key2hex
|
|
297
|
+
|
|
298
|
+
# Signed entitlement claim expectations (optional, advanced)
|
|
299
|
+
# SKILLGATE_ENTITLEMENT_ISSUER=skillgate-authority
|
|
300
|
+
# SKILLGATE_ENTITLEMENT_AUDIENCE=skillgate-cli
|
|
301
|
+
# SKILLGATE_ENTITLEMENT_CLOCK_SKEW_SECONDS=120
|
|
302
|
+
# SKILLGATE_ENTITLEMENT_NONCE_TTL_SECONDS=900
|
|
303
|
+
# SKILLGATE_ENTITLEMENT_NONCE_CACHE_SIZE=10000
|
|
304
|
+
|
|
305
|
+
# Runtime trust propagation for nested agent invocations (native hooks / sub-agents)
|
|
306
|
+
# Scope token from parent SkillGate runtime session
|
|
307
|
+
# SKILLGATE_SCOPE_TOKEN=
|
|
308
|
+
# Ed25519 public key used to verify SKILLGATE_SCOPE_TOKEN
|
|
309
|
+
# SKILLGATE_SCOPE_PUBLIC_KEY=
|
|
310
|
+
|
|
311
|
+
# Signed reputation graph path for runtime reputation enforcement
|
|
312
|
+
# SKILLGATE_REPUTATION_STORE=.skillgate/reputation/reputation.json
|
|
313
|
+
|
|
314
|
+
# Runtime gateway and sandbox controls
|
|
315
|
+
# OPTIONAL
|
|
316
|
+
# SKILLGATE_ALLOWED_TOOL_CLASSES=shell,network,filesystem,process
|
|
317
|
+
# SKILLGATE_SANDBOX_BACKEND=
|
|
318
|
+
# SKILLGATE_RUNTIME_TIMEOUT_SECONDS=15
|
|
319
|
+
|
|
320
|
+
# Runtime capability budgets (per day; set >0 to enforce in ci/prod/strict)
|
|
321
|
+
# SKILLGATE_CAPABILITY_BUDGET_PATH=.skillgate/runtime/capability_budgets.json
|
|
322
|
+
# SKILLGATE_BUDGET_SHELL_PER_DAY=0
|
|
323
|
+
# SKILLGATE_BUDGET_NETWORK_PER_DAY=0
|
|
324
|
+
# SKILLGATE_BUDGET_FILESYSTEM_PER_DAY=0
|
|
325
|
+
# SKILLGATE_BUDGET_PROCESS_PER_DAY=0
|
|
326
|
+
# Optional scoped budgets (enforced in addition to global daily budgets)
|
|
327
|
+
# SKILLGATE_BUDGET_SHELL_PER_ORG_PER_DAY=0
|
|
328
|
+
# SKILLGATE_BUDGET_NETWORK_PER_ORG_PER_DAY=0
|
|
329
|
+
# SKILLGATE_BUDGET_FILESYSTEM_PER_ORG_PER_DAY=0
|
|
330
|
+
# SKILLGATE_BUDGET_PROCESS_PER_ORG_PER_DAY=0
|
|
331
|
+
# SKILLGATE_BUDGET_SHELL_PER_SESSION=0
|
|
332
|
+
# SKILLGATE_BUDGET_NETWORK_PER_SESSION=0
|
|
333
|
+
# SKILLGATE_BUDGET_FILESYSTEM_PER_SESSION=0
|
|
334
|
+
# SKILLGATE_BUDGET_PROCESS_PER_SESSION=0
|
|
335
|
+
# External-domain budget controls
|
|
336
|
+
# SKILLGATE_BUDGET_EXTERNAL_DOMAINS_PER_DAY=0
|
|
337
|
+
# SKILLGATE_BUDGET_EXTERNAL_DOMAINS_PER_ORG_PER_DAY=0
|
|
338
|
+
# SKILLGATE_BUDGET_EXTERNAL_DOMAINS_PER_SESSION=0
|
|
339
|
+
# Domain-chain budget controls (unique domain-to-domain transitions)
|
|
340
|
+
# SKILLGATE_BUDGET_DOMAIN_CHAINS_PER_DAY=0
|
|
341
|
+
# SKILLGATE_BUDGET_DOMAIN_CHAINS_PER_ORG_PER_DAY=0
|
|
342
|
+
# SKILLGATE_BUDGET_DOMAIN_CHAINS_PER_SESSION=0
|
|
343
|
+
# Optional org identifier fallback for runtime wrappers
|
|
344
|
+
# SKILLGATE_ORG_ID=
|
|
345
|
+
# Optional approval workflow quorum for hardened runtime invocations
|
|
346
|
+
# SKILLGATE_APPROVAL_REQUIRED_REVIEWERS=0
|
|
347
|
+
|
|
348
|
+
# Air-gap mode daily remaining scans counter (set by offline entitlement pack process)
|
|
349
|
+
# SKILLGATE_AIRGAP_SCANS_REMAINING_TODAY=3
|
|
350
|
+
# Air-gap entitlement pack file path
|
|
351
|
+
# OPTIONAL
|
|
352
|
+
# SKILLGATE_AIRGAP_PACK_PATH=.skillgate/airgap-pack.json
|
|
353
|
+
|
|
354
|
+
# Local quota file override
|
|
355
|
+
# OPTIONAL
|
|
356
|
+
# SKILLGATE_QUOTA_FILE=.skillgate/quota.json
|
|
357
|
+
|
|
358
|
+
# Disable logo/banner in CLI output
|
|
359
|
+
# SKILLGATE_NO_LOGO=false
|
|
360
|
+
# SKILLGATE_NO_BANNER=false
|
|
361
|
+
|
|
362
|
+
# Disable color output (for CI/CD environments)
|
|
363
|
+
# NO_COLOR=
|
|
364
|
+
|
|
365
|
+
# Test mode (disables network calls in scans)
|
|
366
|
+
# SKILLGATE_TEST_MODE=false
|
|
367
|
+
|
|
368
|
+
# Team/tier test harness controls (test/dev only)
|
|
369
|
+
# OPTIONAL
|
|
370
|
+
# SKILLGATE_TIER=free
|
|
371
|
+
# SKILLGATE_TEAM_ACTIVE_SEATS=0
|
|
372
|
+
|
|
373
|
+
# CLI simulate command provider tokens
|
|
374
|
+
# OPTIONAL
|
|
375
|
+
# SKILLGATE_GITHUB_TOKEN=
|
|
376
|
+
# GITHUB_TOKEN=
|
|
377
|
+
# SKILLGATE_GITLAB_TOKEN=
|
|
378
|
+
# GITLAB_TOKEN=
|
|
379
|
+
|
|
380
|
+
# npm shim override (Node wrapper to choose Python binary)
|
|
381
|
+
# OPTIONAL
|
|
382
|
+
# SKILLGATE_PYTHON=/absolute/path/to/python
|
|
383
|
+
|
|
384
|
+
# ============================================================================
|
|
385
|
+
# WEB-UI VARIABLES (also mirrored in web-ui/.env.example)
|
|
386
|
+
# ============================================================================
|
|
387
|
+
|
|
388
|
+
# Public API base URL consumed by web app
|
|
389
|
+
# REQUIRED for production web deployment
|
|
390
|
+
# NEXT_PUBLIC_API_URL=https://api.skillgate.io/api/v1
|
|
391
|
+
|
|
392
|
+
# Analytics endpoint + batching
|
|
393
|
+
# OPTIONAL
|
|
394
|
+
# NEXT_PUBLIC_ANALYTICS_ENDPOINT=
|
|
395
|
+
# NEXT_PUBLIC_ANALYTICS_FLUSH_SIZE=10
|
|
396
|
+
|
|
397
|
+
# Pricing beta CTA switch
|
|
398
|
+
# OPTIONAL
|
|
399
|
+
# NEXT_PUBLIC_PRICING_BETA_FREE_CTA=false
|
|
400
|
+
|
|
401
|
+
# Client-side Stripe key
|
|
402
|
+
# REQUIRED for Stripe checkout UX in web app
|
|
403
|
+
# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx
|
|
404
|
+
|
|
405
|
+
# Web E2E/playwright runtime vars (CI/dev only)
|
|
406
|
+
# OPTIONAL
|
|
407
|
+
# PLAYWRIGHT_PORT=4010
|
|
408
|
+
# PLAYWRIGHT_HOST=127.0.0.1
|
|
409
|
+
# PLAYWRIGHT_BASE_URL=http://127.0.0.1:4010
|
|
410
|
+
# PLAYWRIGHT_ANALYTICS_ENDPOINT=http://127.0.0.1:4010/__analytics
|
|
411
|
+
|
|
412
|
+
# General node/web build flags (CI/dev)
|
|
413
|
+
# OPTIONAL
|
|
414
|
+
# NODE_ENV=production
|
|
415
|
+
# ANALYZE=false
|
|
416
|
+
# CI=false
|
|
417
|
+
# PORT=3000
|
|
418
|
+
|
|
419
|
+
# ============================================================================
|
|
420
|
+
# PRODUCTION DEPLOYMENT CHECKLIST
|
|
421
|
+
# ============================================================================
|
|
422
|
+
#
|
|
423
|
+
# Before deploying to production, ensure:
|
|
424
|
+
#
|
|
425
|
+
# 1. ✅ SKILLGATE_ENV=production
|
|
426
|
+
# 2. ✅ All *_SECRET and *_PEPPER variables are set with ≥64 secure random chars
|
|
427
|
+
# 3. ✅ SKILLGATE_DATABASE_URL points to production database
|
|
428
|
+
# 4. ✅ SKILLGATE_REDIS_URL points to production Redis
|
|
429
|
+
# 5. ✅ STRIPE_SECRET_KEY is production key (sk_live_*)
|
|
430
|
+
# 6. ✅ STRIPE_WEBHOOK_SECRET is configured with endpoint signature
|
|
431
|
+
# 7. ✅ SKILLGATE_CORS_ORIGINS contains only trusted domains
|
|
432
|
+
# 8. ✅ OAuth credentials are production (if OAuth enabled)
|
|
433
|
+
# 9. ✅ No .env file is committed to version control
|
|
434
|
+
# 10. ✅ Secrets are stored in secure secret management (AWS Secrets Manager, HashiCorp Vault, etc.)
|
|
435
|
+
#
|
|
436
|
+
# Security reminders:
|
|
437
|
+
# - Legacy unsigned API keys (sg_pro_*, sg_ent_*) are BLOCKED in production
|
|
438
|
+
# - Demo OAuth mode is BLOCKED in production
|
|
439
|
+
# - All webhook URLs are validated against allowlist
|
|
440
|
+
# - Rate limiting uses socket IP (not spoofable headers)
|
|
441
|
+
#
|
|
442
|
+
# ============================================================================
|