skep 1.0.1__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.
- skep-1.0.1/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- skep-1.0.1/.github/ISSUE_TEMPLATE/question.md +21 -0
- skep-1.0.1/.github/workflows/ci.yml +79 -0
- skep-1.0.1/.github/workflows/release.yml +95 -0
- skep-1.0.1/.gitignore +17 -0
- skep-1.0.1/CLAUDE.md +115 -0
- skep-1.0.1/CONTRIBUTING.md +76 -0
- skep-1.0.1/Dockerfile +41 -0
- skep-1.0.1/Dockerfile.dockerignore +19 -0
- skep-1.0.1/LICENSE +21 -0
- skep-1.0.1/Makefile +90 -0
- skep-1.0.1/PKG-INFO +153 -0
- skep-1.0.1/README.md +109 -0
- skep-1.0.1/SECURITY.md +30 -0
- skep-1.0.1/agent-task-contract-spec-v0.1.md +190 -0
- skep-1.0.1/docker-compose.yml +26 -0
- skep-1.0.1/docs/README.md +63 -0
- skep-1.0.1/docs/adr/0001-contract-ownership.md +30 -0
- skep-1.0.1/docs/adr/0002-worktree-patch-approval.md +41 -0
- skep-1.0.1/docs/adr/0003-carve-out-boundary.md +38 -0
- skep-1.0.1/docs/adr/0004-licensing.md +39 -0
- skep-1.0.1/docs/adr/0005-seatbelt-sandbox.md +74 -0
- skep-1.0.1/docs/adr/0006-supervisor-reverification.md +57 -0
- skep-1.0.1/docs/adr/0007-auto-approval-rules.md +51 -0
- skep-1.0.1/docs/adr/0008-suspend-resume.md +50 -0
- skep-1.0.1/docs/adr/0009-usage-accounting.md +40 -0
- skep-1.0.1/docs/adr/0010-storage-gate.md +59 -0
- skep-1.0.1/docs/adr/0011-network-allowlist-proxy.md +64 -0
- skep-1.0.1/docs/adr/0012-scheduling.md +50 -0
- skep-1.0.1/docs/adr/0013-auto-approval-active-u1.md +53 -0
- skep-1.0.1/docs/adr/0014-container-portability.md +73 -0
- skep-1.0.1/docs/adr/0015-workflow-templates.md +77 -0
- skep-1.0.1/docs/adr/0016-learned-skills-promotion.md +124 -0
- skep-1.0.1/docs/adr/0017-serve-api-daemon.md +87 -0
- skep-1.0.1/docs/adr/0018-container-packaging.md +72 -0
- skep-1.0.1/docs/adr/0019-llm-chat-in-the-queen.md +88 -0
- skep-1.0.1/docs/adr/0020-notes-tasks-gating.md +36 -0
- skep-1.0.1/docs/adr/0021-browser-automation-deferred.md +44 -0
- skep-1.0.1/docs/adr/0022-policy-first-unified-schema.md +84 -0
- skep-1.0.1/docs/adr/0023-queen-file-reads.md +50 -0
- skep-1.0.1/docs/adr/0024-script-worker-run-code.md +50 -0
- skep-1.0.1/docs/adr/0025-batch-dispatch.md +37 -0
- skep-1.0.1/docs/adr/0026-operator-policy-resolution.md +68 -0
- skep-1.0.1/docs/adr/0027-chat-context-injection.md +48 -0
- skep-1.0.1/docs/adr/0028-profile-persona.md +44 -0
- skep-1.0.1/docs/adr/0029-conversation-skills.md +50 -0
- skep-1.0.1/docs/adr/0030-cron-context-chaining.md +47 -0
- skep-1.0.1/docs/adr/0031-voice-channel-layer.md +53 -0
- skep-1.0.1/docs/adr/0032-card-auto-deny-timeout.md +47 -0
- skep-1.0.1/docs/adr/0033-human-readable-cards.md +43 -0
- skep-1.0.1/docs/adr/0034-multi-run-pr-grouping.md +48 -0
- skep-1.0.1/docs/adr/0035-repo-freshness-supervisor.md +61 -0
- skep-1.0.1/docs/adr/0036-project-policy-copy.md +45 -0
- skep-1.0.1/docs/adr/0037-chat-context-budget.md +57 -0
- skep-1.0.1/docs/adr/0038-approvals-announce.md +51 -0
- skep-1.0.1/docs/adr/0039-queen-git-surface.md +50 -0
- skep-1.0.1/docs/adr/0040-reactive-worker-execution.md +64 -0
- skep-1.0.1/docs/adr/0041-reasoning-delegation.md +48 -0
- skep-1.0.1/docs/adr/0042-prompt-schedules.md +52 -0
- skep-1.0.1/docs/adr/0043-seed-skills.md +49 -0
- skep-1.0.1/docs/adr/0044-outbound-content-cards.md +57 -0
- skep-1.0.1/docs/adr/0045-skill-pack-lifecycle.md +76 -0
- skep-1.0.1/docs/adr/0046-session-approvals.md +59 -0
- skep-1.0.1/docs/adr/0047-cli-agent-engines.md +104 -0
- skep-1.0.1/docs/adr/0048-policy-groups.md +78 -0
- skep-1.0.1/docs/adr/0049-caste-registry.md +92 -0
- skep-1.0.1/docs/adr/0050-one-verb-three-faces.md +90 -0
- skep-1.0.1/docs/adr/README.md +63 -0
- skep-1.0.1/docs/approvals.md +138 -0
- skep-1.0.1/docs/assets/skep-demo.gif +0 -0
- skep-1.0.1/docs/assistant-tools.md +57 -0
- skep-1.0.1/docs/brain.md +47 -0
- skep-1.0.1/docs/browser.md +49 -0
- skep-1.0.1/docs/cli-reference.md +224 -0
- skep-1.0.1/docs/competitive-analysis.md +115 -0
- skep-1.0.1/docs/configuration.md +223 -0
- skep-1.0.1/docs/demo-gif.md +47 -0
- skep-1.0.1/docs/favicon.svg +7 -0
- skep-1.0.1/docs/how-it-works.md +208 -0
- skep-1.0.1/docs/how-to-use-on-new-machine.md +110 -0
- skep-1.0.1/docs/index.html +293 -0
- skep-1.0.1/docs/invariants.md +280 -0
- skep-1.0.1/docs/landing.css +516 -0
- skep-1.0.1/docs/landing.js +58 -0
- skep-1.0.1/docs/launch.md +233 -0
- skep-1.0.1/docs/mobile.md +73 -0
- skep-1.0.1/docs/post-launch.md +69 -0
- skep-1.0.1/docs/quickstart.md +116 -0
- skep-1.0.1/docs/release-checklist.md +151 -0
- skep-1.0.1/docs/releases/README.md +72 -0
- skep-1.0.1/docs/sandboxing.md +92 -0
- skep-1.0.1/docs/verification.md +91 -0
- skep-1.0.1/docs/version-history.md +2466 -0
- skep-1.0.1/docs/workers.md +195 -0
- skep-1.0.1/examples/skep-demo/README.md +23 -0
- skep-1.0.1/examples/skep-demo/app.py +7 -0
- skep-1.0.1/examples/skep-demo/tests/test_app.py +23 -0
- skep-1.0.1/pyproject.toml +115 -0
- skep-1.0.1/scripts/claude-adapter-smoke.sh +134 -0
- skep-1.0.1/scripts/demo_worker.py +270 -0
- skep-1.0.1/scripts/docker-image-smoke.sh +65 -0
- skep-1.0.1/scripts/docs-link-smoke.py +59 -0
- skep-1.0.1/scripts/install.sh +73 -0
- skep-1.0.1/scripts/linux-sandbox-docker-smoke.sh +16 -0
- skep-1.0.1/scripts/linux-sandbox-smoke.sh +83 -0
- skep-1.0.1/scripts/local-release-gates.sh +36 -0
- skep-1.0.1/scripts/mirror-demo-repo.sh +75 -0
- skep-1.0.1/scripts/package-install-smoke.sh +42 -0
- skep-1.0.1/scripts/record-demo-gif.sh +134 -0
- skep-1.0.1/scripts/release-hygiene-scan.sh +120 -0
- skep-1.0.1/scripts/reliability.sh +84 -0
- skep-1.0.1/scripts/scorecard.py +13 -0
- skep-1.0.1/src/skep/__init__.py +1 -0
- skep-1.0.1/src/skep/__main__.py +4 -0
- skep-1.0.1/src/skep/cli.py +302 -0
- skep-1.0.1/src/skep/cli_chat.py +1289 -0
- skep-1.0.1/src/skep/dashboard.py +228 -0
- skep-1.0.1/src/skep/mcp_servers/__init__.py +8 -0
- skep-1.0.1/src/skep/mcp_servers/calendar.py +258 -0
- skep-1.0.1/src/skep/mcp_servers/mail.py +287 -0
- skep-1.0.1/src/skep/netshim.py +108 -0
- skep-1.0.1/src/skep/profile.py +129 -0
- skep-1.0.1/src/skep/seeds/skills/add-a-test/SKILL.md +18 -0
- skep-1.0.1/src/skep/seeds/skills/airtable/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/architecture-diagram/SKILL.md +22 -0
- skep-1.0.1/src/skep/seeds/skills/arxiv/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/ascii-art/SKILL.md +22 -0
- skep-1.0.1/src/skep/seeds/skills/ascii-video/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/audiocraft-audio-generation/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/audit-an-agent-stack/SKILL.md +39 -0
- skep-1.0.1/src/skep/seeds/skills/baoyu-infographic/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/blogwatcher/SKILL.md +22 -0
- skep-1.0.1/src/skep/seeds/skills/briefing-a-worker-about-git/SKILL.md +78 -0
- skep-1.0.1/src/skep/seeds/skills/claude-code/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/cli-app-field-testing/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/codebase-architecture-analysis/SKILL.md +24 -0
- skep-1.0.1/src/skep/seeds/skills/codex/SKILL.md +19 -0
- skep-1.0.1/src/skep/seeds/skills/comfyui/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/company-research/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/compare-coding-engines/SKILL.md +37 -0
- skep-1.0.1/src/skep/seeds/skills/computer-use/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/council/SKILL.md +35 -0
- skep-1.0.1/src/skep/seeds/skills/create-a-new-module/SKILL.md +16 -0
- skep-1.0.1/src/skep/seeds/skills/daily-briefing/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/debug-a-failure/SKILL.md +18 -0
- skep-1.0.1/src/skep/seeds/skills/deck-widgets/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/skills/design-md/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/discord-bot-development/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/discord-web-api/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/skills/docx/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/dogfood/SKILL.md +22 -0
- skep-1.0.1/src/skep/seeds/skills/email-cleanup/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/skills/evaluating-llms-harness/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/excalidraw/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/fix-a-lint-error/SKILL.md +17 -0
- skep-1.0.1/src/skep/seeds/skills/gif-search/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/git-and-github/SKILL.md +121 -0
- skep-1.0.1/src/skep/seeds/skills/google-workspace/SKILL.md +24 -0
- skep-1.0.1/src/skep/seeds/skills/himalaya/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/html-design/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/huggingface-hub/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/humanizer/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/investigate-a-codebase/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/jupyter-live-kernel/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/llama-cpp/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/skills/llm-wiki/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/manim-video/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/maps/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/nano-pdf/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/node-inspect-debugger/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/notion/SKILL.md +24 -0
- skep-1.0.1/src/skep/seeds/skills/obsidian/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/ocr-and-documents/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/opencode/SKILL.md +17 -0
- skep-1.0.1/src/skep/seeds/skills/orchestrate-cli-coding-agent/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/p5js/SKILL.md +24 -0
- skep-1.0.1/src/skep/seeds/skills/pdf/SKILL.md +24 -0
- skep-1.0.1/src/skep/seeds/skills/plan/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/polymarket/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/popular-web-designs/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/postmortem-a-run/SKILL.md +38 -0
- skep-1.0.1/src/skep/seeds/skills/powerpoint/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/prepare-a-release/SKILL.md +18 -0
- skep-1.0.1/src/skep/seeds/skills/pretext/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/production-readiness/SKILL.md +41 -0
- skep-1.0.1/src/skep/seeds/skills/python-debugpy/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/requesting-code-review/SKILL.md +22 -0
- skep-1.0.1/src/skep/seeds/skills/research-a-topic/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/review-a-pr/SKILL.md +19 -0
- skep-1.0.1/src/skep/seeds/skills/security-audit/SKILL.md +40 -0
- skep-1.0.1/src/skep/seeds/skills/segment-anything-model/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/serving-llms-vllm/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/simplify-code/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/skep-agent/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/skep-skill-authoring/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/sketch/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/songwriting-and-ai-music/SKILL.md +26 -0
- skep-1.0.1/src/skep/seeds/skills/spike/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/summarize-a-youtube-video/SKILL.md +20 -0
- skep-1.0.1/src/skep/seeds/skills/systematic-debugging/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/teams-meeting-pipeline/SKILL.md +25 -0
- skep-1.0.1/src/skep/seeds/skills/test-driven-development/SKILL.md +21 -0
- skep-1.0.1/src/skep/seeds/skills/touchdesigner-mcp/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/skills/weights-and-biases/SKILL.md +27 -0
- skep-1.0.1/src/skep/seeds/skills/write-an-adr/SKILL.md +34 -0
- skep-1.0.1/src/skep/seeds/skills/xlsx/SKILL.md +23 -0
- skep-1.0.1/src/skep/seeds/skills/xurl/SKILL.md +28 -0
- skep-1.0.1/src/skep/seeds/tools/yt_transcript.py +197 -0
- skep-1.0.1/src/skep/server.py +42 -0
- skep-1.0.1/src/skep/status.py +565 -0
- skep-1.0.1/src/skep/supervisor/__init__.py +147 -0
- skep-1.0.1/src/skep/supervisor/apply.py +234 -0
- skep-1.0.1/src/skep/supervisor/autonomy.py +211 -0
- skep-1.0.1/src/skep/supervisor/castes.py +183 -0
- skep-1.0.1/src/skep/supervisor/channel_cmds.py +78 -0
- skep-1.0.1/src/skep/supervisor/cli_cmds.py +2784 -0
- skep-1.0.1/src/skep/supervisor/config.py +75 -0
- skep-1.0.1/src/skep/supervisor/container.py +88 -0
- skep-1.0.1/src/skep/supervisor/contracts_io.py +129 -0
- skep-1.0.1/src/skep/supervisor/dispatch.py +868 -0
- skep-1.0.1/src/skep/supervisor/engines.py +140 -0
- skep-1.0.1/src/skep/supervisor/forge.py +405 -0
- skep-1.0.1/src/skep/supervisor/github.py +245 -0
- skep-1.0.1/src/skep/supervisor/hermes_cmds.py +271 -0
- skep-1.0.1/src/skep/supervisor/ids.py +16 -0
- skep-1.0.1/src/skep/supervisor/ingest.py +339 -0
- skep-1.0.1/src/skep/supervisor/mcp_client.py +539 -0
- skep-1.0.1/src/skep/supervisor/memory.py +127 -0
- skep-1.0.1/src/skep/supervisor/memory_cmds.py +332 -0
- skep-1.0.1/src/skep/supervisor/monitor.py +187 -0
- skep-1.0.1/src/skep/supervisor/netproxy.py +323 -0
- skep-1.0.1/src/skep/supervisor/nodes.py +81 -0
- skep-1.0.1/src/skep/supervisor/observe.py +201 -0
- skep-1.0.1/src/skep/supervisor/obsidian.py +102 -0
- skep-1.0.1/src/skep/supervisor/ops_cmds.py +241 -0
- skep-1.0.1/src/skep/supervisor/packs.py +308 -0
- skep-1.0.1/src/skep/supervisor/permission_profile.py +127 -0
- skep-1.0.1/src/skep/supervisor/plugin_lifecycle.py +129 -0
- skep-1.0.1/src/skep/supervisor/policy.py +210 -0
- skep-1.0.1/src/skep/supervisor/policy_resolver.py +755 -0
- skep-1.0.1/src/skep/supervisor/policy_schema.py +370 -0
- skep-1.0.1/src/skep/supervisor/policy_templates/__init__.py +135 -0
- skep-1.0.1/src/skep/supervisor/policy_templates/assistant.json +59 -0
- skep-1.0.1/src/skep/supervisor/policy_templates/homelab-ops.json +56 -0
- skep-1.0.1/src/skep/supervisor/policy_templates/locked-down.json +48 -0
- skep-1.0.1/src/skep/supervisor/policy_templates/personal-dev.json +55 -0
- skep-1.0.1/src/skep/supervisor/projects.py +560 -0
- skep-1.0.1/src/skep/supervisor/provider_hosts.py +50 -0
- skep-1.0.1/src/skep/supervisor/providers.py +250 -0
- skep-1.0.1/src/skep/supervisor/reverify.py +292 -0
- skep-1.0.1/src/skep/supervisor/sandbox.py +561 -0
- skep-1.0.1/src/skep/supervisor/scheduler.py +742 -0
- skep-1.0.1/src/skep/supervisor/scorecard.py +174 -0
- skep-1.0.1/src/skep/supervisor/scorecard_runner.py +256 -0
- skep-1.0.1/src/skep/supervisor/seed_skills.py +138 -0
- skep-1.0.1/src/skep/supervisor/serve/__init__.py +17 -0
- skep-1.0.1/src/skep/supervisor/serve/actions.py +3197 -0
- skep-1.0.1/src/skep/supervisor/serve/app.py +825 -0
- skep-1.0.1/src/skep/supervisor/serve/auth.py +72 -0
- skep-1.0.1/src/skep/supervisor/serve/cards.py +235 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/__init__.py +254 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/discord.py +200 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/outbound.py +225 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/runtime.py +1377 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/slack.py +154 -0
- skep-1.0.1/src/skep/supervisor/serve/channels/telegram.py +190 -0
- skep-1.0.1/src/skep/supervisor/serve/chat.py +2284 -0
- skep-1.0.1/src/skep/supervisor/serve/discord_admin.py +42 -0
- skep-1.0.1/src/skep/supervisor/serve/fastlane.py +96 -0
- skep-1.0.1/src/skep/supervisor/serve/fileio.py +312 -0
- skep-1.0.1/src/skep/supervisor/serve/jobs.py +139 -0
- skep-1.0.1/src/skep/supervisor/serve/llm.py +850 -0
- skep-1.0.1/src/skep/supervisor/serve/memory.py +75 -0
- skep-1.0.1/src/skep/supervisor/serve/notes.py +139 -0
- skep-1.0.1/src/skep/supervisor/serve/persona.py +64 -0
- skep-1.0.1/src/skep/supervisor/serve/processes.py +163 -0
- skep-1.0.1/src/skep/supervisor/serve/registry.py +1679 -0
- skep-1.0.1/src/skep/supervisor/serve/remediation.py +68 -0
- skep-1.0.1/src/skep/supervisor/serve/run_status.py +350 -0
- skep-1.0.1/src/skep/supervisor/serve/serve_cmds.py +97 -0
- skep-1.0.1/src/skep/supervisor/serve/settings.py +297 -0
- skep-1.0.1/src/skep/supervisor/serve/setup.py +159 -0
- skep-1.0.1/src/skep/supervisor/serve/static/app.js +5503 -0
- skep-1.0.1/src/skep/supervisor/serve/static/fonts/OFL.txt +93 -0
- skep-1.0.1/src/skep/supervisor/serve/static/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- skep-1.0.1/src/skep/supervisor/serve/static/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
- skep-1.0.1/src/skep/supervisor/serve/static/fonts/jetbrains-mono-latin-600-normal.woff2 +0 -0
- skep-1.0.1/src/skep/supervisor/serve/static/index.html +85 -0
- skep-1.0.1/src/skep/supervisor/serve/static/style.css +1473 -0
- skep-1.0.1/src/skep/supervisor/serve/ticker.py +286 -0
- skep-1.0.1/src/skep/supervisor/serve/tools.py +4717 -0
- skep-1.0.1/src/skep/supervisor/serve/webhooks.py +154 -0
- skep-1.0.1/src/skep/supervisor/serve/websearch.py +167 -0
- skep-1.0.1/src/skep/supervisor/shell_prefixes.py +277 -0
- skep-1.0.1/src/skep/supervisor/skill_bundle.py +132 -0
- skep-1.0.1/src/skep/supervisor/skill_cmds.py +1008 -0
- skep-1.0.1/src/skep/supervisor/skill_curator.py +38 -0
- skep-1.0.1/src/skep/supervisor/skill_md.py +155 -0
- skep-1.0.1/src/skep/supervisor/skill_packs.py +498 -0
- skep-1.0.1/src/skep/supervisor/skills.py +336 -0
- skep-1.0.1/src/skep/supervisor/spawner.py +210 -0
- skep-1.0.1/src/skep/supervisor/store.py +3926 -0
- skep-1.0.1/src/skep/supervisor/template_suggestion.py +106 -0
- skep-1.0.1/src/skep/supervisor/templates.py +364 -0
- skep-1.0.1/src/skep/supervisor/voice.py +119 -0
- skep-1.0.1/src/skep/supervisor/worker_state.py +62 -0
- skep-1.0.1/src/skep/supervisor/worktree.py +134 -0
- skep-1.0.1/src/skep/worker_contract/__init__.py +102 -0
- skep-1.0.1/src/skep/worker_contract/events.py +132 -0
- skep-1.0.1/src/skep/worker_contract/py.typed +1 -0
- skep-1.0.1/src/skep/worker_contract/result.py +89 -0
- skep-1.0.1/src/skep/worker_contract/states.py +33 -0
- skep-1.0.1/src/skep/worker_contract/task.py +183 -0
- skep-1.0.1/src/skep/worker_contract/version.py +67 -0
- skep-1.0.1/src/skep/worker_contract/worker_state.py +234 -0
- skep-1.0.1/src/skep/workers/__init__.py +6 -0
- skep-1.0.1/src/skep/workers/aider/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/aider/__main__.py +54 -0
- skep-1.0.1/src/skep/workers/audit.py +389 -0
- skep-1.0.1/src/skep/workers/capabilities.py +1697 -0
- skep-1.0.1/src/skep/workers/claude_code/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/claude_code/__main__.py +49 -0
- skep-1.0.1/src/skep/workers/cli_adapter.py +415 -0
- skep-1.0.1/src/skep/workers/codex/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/codex/__main__.py +41 -0
- skep-1.0.1/src/skep/workers/coding/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/coding/__main__.py +6 -0
- skep-1.0.1/src/skep/workers/coding_minimal.py +2233 -0
- skep-1.0.1/src/skep/workers/curator.py +297 -0
- skep-1.0.1/src/skep/workers/document.py +376 -0
- skep-1.0.1/src/skep/workers/html_text.py +204 -0
- skep-1.0.1/src/skep/workers/llm_plan.py +880 -0
- skep-1.0.1/src/skep/workers/ollama/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/ollama/__main__.py +70 -0
- skep-1.0.1/src/skep/workers/ops.py +157 -0
- skep-1.0.1/src/skep/workers/ops_executor.py +243 -0
- skep-1.0.1/src/skep/workers/researcher.py +445 -0
- skep-1.0.1/src/skep/workers/reviewer.py +473 -0
- skep-1.0.1/src/skep/workers/runtime_plugins.py +646 -0
- skep-1.0.1/src/skep/workers/script_worker.py +332 -0
- skep-1.0.1/src/skep/workers/shell_worker/__init__.py +5 -0
- skep-1.0.1/src/skep/workers/shell_worker/__main__.py +6 -0
- skep-1.0.1/src/skep/workers/shell_worker/runner.py +288 -0
- skep-1.0.1/src/skep/workers/verifier.py +302 -0
- skep-1.0.1/src/skep/workers/worker_runtime.py +109 -0
- skep-1.0.1/tests/__init__.py +0 -0
- skep-1.0.1/tests/external/__init__.py +1 -0
- skep-1.0.1/tests/external/test_feature_smokes.py +344 -0
- skep-1.0.1/tests/external/test_whole_app_external.py +220 -0
- skep-1.0.1/tests/field-test-tasks.md +83 -0
- skep-1.0.1/tests/fixtures/__init__.py +0 -0
- skep-1.0.1/tests/fixtures/capability_policy_matrix.json +229 -0
- skep-1.0.1/tests/fixtures/policy_regression/build_phase_manual_landing.json +11 -0
- skep-1.0.1/tests/fixtures/policy_regression/disallowed_network_denied.json +12 -0
- skep-1.0.1/tests/fixtures/policy_regression/explicit_override_requires_approval.json +12 -0
- skep-1.0.1/tests/fixtures/policy_regression/git_push_denied_regardless_of_grants.json +16 -0
- skep-1.0.1/tests/fixtures/policy_regression/maintain_phase_auto_landing.json +11 -0
- skep-1.0.1/tests/fixtures/policy_regression/missing_execution_mode_blocks_schedule.json +14 -0
- skep-1.0.1/tests/fixtures/policy_regression/publish_candidate_strict_landing.json +11 -0
- skep-1.0.1/tests/fixtures/policy_regression/remembered_command_normalized.json +30 -0
- skep-1.0.1/tests/fixtures/policy_regression/trusted_maintain_safe_dispatch.json +12 -0
- skep-1.0.1/tests/fixtures/policy_regression/unknown_repo_requires_approval.json +11 -0
- skep-1.0.1/tests/fixtures/policy_regression/v19_f2_provider_host_in_network.json +25 -0
- skep-1.0.1/tests/fixtures/policy_regression/v19_f3_remote_git_denied.json +30 -0
- skep-1.0.1/tests/fixtures/policy_regression/v19_f4_remembered_command_guarded.json +24 -0
- skep-1.0.1/tests/fixtures/policy_scopes/deny_wins_ties.json +25 -0
- skep-1.0.1/tests/fixtures/policy_scopes/most_specific_wins.json +65 -0
- skep-1.0.1/tests/fixtures/policy_scopes/overlay_tightens_base.json +48 -0
- skep-1.0.1/tests/fixtures/policy_templates/assistant.resolved.json +46 -0
- skep-1.0.1/tests/fixtures/policy_templates/homelab-ops.resolved.json +104 -0
- skep-1.0.1/tests/fixtures/policy_templates/locked-down.resolved.json +68 -0
- skep-1.0.1/tests/fixtures/policy_templates/personal-dev.resolved.json +98 -0
- skep-1.0.1/tests/fixtures/project_policy_v9_golden.json +48 -0
- skep-1.0.1/tests/fixtures/toy_repo.py +157 -0
- skep-1.0.1/tests/smoke/__init__.py +0 -0
- skep-1.0.1/tests/smoke/test_autonomy_scorecard.py +343 -0
- skep-1.0.1/tests/smoke/test_public_free_acceptance.py +124 -0
- skep-1.0.1/tests/smoke/test_setup_flow.py +115 -0
- skep-1.0.1/tests/smoke/test_skills_acceptance.py +206 -0
- skep-1.0.1/tests/smoke/test_templates_acceptance.py +110 -0
- skep-1.0.1/tests/smoke/test_u1_acceptance.py +109 -0
- skep-1.0.1/tests/smoke/test_whole_system.py +148 -0
- skep-1.0.1/tests/supervisor/__init__.py +0 -0
- skep-1.0.1/tests/supervisor/conftest.py +79 -0
- skep-1.0.1/tests/supervisor/fake_anthropic.py +152 -0
- skep-1.0.1/tests/supervisor/fake_ollama.py +170 -0
- skep-1.0.1/tests/supervisor/fake_openai.py +166 -0
- skep-1.0.1/tests/supervisor/fake_worker.py +306 -0
- skep-1.0.1/tests/supervisor/test_adr_launch_updates.py +30 -0
- skep-1.0.1/tests/supervisor/test_approval_grants.py +194 -0
- skep-1.0.1/tests/supervisor/test_approval_ledger.py +146 -0
- skep-1.0.1/tests/supervisor/test_audit_worker.py +89 -0
- skep-1.0.1/tests/supervisor/test_autonomy_parity.py +180 -0
- skep-1.0.1/tests/supervisor/test_await_runs.py +192 -0
- skep-1.0.1/tests/supervisor/test_batch_dispatch.py +369 -0
- skep-1.0.1/tests/supervisor/test_boundary_teaching.py +111 -0
- skep-1.0.1/tests/supervisor/test_browse_scope.py +248 -0
- skep-1.0.1/tests/supervisor/test_capability_policy_matrix.py +96 -0
- skep-1.0.1/tests/supervisor/test_card_description.py +59 -0
- skep-1.0.1/tests/supervisor/test_card_timeout.py +270 -0
- skep-1.0.1/tests/supervisor/test_cards.py +112 -0
- skep-1.0.1/tests/supervisor/test_castes.py +131 -0
- skep-1.0.1/tests/supervisor/test_channel_cli.py +50 -0
- skep-1.0.1/tests/supervisor/test_channels.py +223 -0
- skep-1.0.1/tests/supervisor/test_channels_live.py +951 -0
- skep-1.0.1/tests/supervisor/test_chat_attachments.py +120 -0
- skep-1.0.1/tests/supervisor/test_chat_context_budget.py +219 -0
- skep-1.0.1/tests/supervisor/test_chat_memory_injection.py +147 -0
- skep-1.0.1/tests/supervisor/test_chat_project_binding.py +125 -0
- skep-1.0.1/tests/supervisor/test_chat_search.py +234 -0
- skep-1.0.1/tests/supervisor/test_chat_skill_index.py +93 -0
- skep-1.0.1/tests/supervisor/test_chat_skill_mgmt.py +179 -0
- skep-1.0.1/tests/supervisor/test_chat_stream_retry.py +87 -0
- skep-1.0.1/tests/supervisor/test_ci_workflow.py +53 -0
- skep-1.0.1/tests/supervisor/test_clarify.py +127 -0
- skep-1.0.1/tests/supervisor/test_claude_adapter_smoke_script.py +175 -0
- skep-1.0.1/tests/supervisor/test_claude_code_worker.py +170 -0
- skep-1.0.1/tests/supervisor/test_cli.py +2575 -0
- skep-1.0.1/tests/supervisor/test_cli_adapters.py +289 -0
- skep-1.0.1/tests/supervisor/test_cli_chat.py +1233 -0
- skep-1.0.1/tests/supervisor/test_coding_engines.py +274 -0
- skep-1.0.1/tests/supervisor/test_coding_minimal_worker.py +5377 -0
- skep-1.0.1/tests/supervisor/test_command_deck.py +494 -0
- skep-1.0.1/tests/supervisor/test_composition_pin.py +133 -0
- skep-1.0.1/tests/supervisor/test_container.py +148 -0
- skep-1.0.1/tests/supervisor/test_conversation_skills.py +130 -0
- skep-1.0.1/tests/supervisor/test_crash_resume.py +231 -0
- skep-1.0.1/tests/supervisor/test_curator_worker.py +180 -0
- skep-1.0.1/tests/supervisor/test_decided_by.py +125 -0
- skep-1.0.1/tests/supervisor/test_deep_research_template.py +55 -0
- skep-1.0.1/tests/supervisor/test_delegate_analysis.py +144 -0
- skep-1.0.1/tests/supervisor/test_demo_repo.py +56 -0
- skep-1.0.1/tests/supervisor/test_discord_admin.py +98 -0
- skep-1.0.1/tests/supervisor/test_discord_channel.py +263 -0
- skep-1.0.1/tests/supervisor/test_discord_gateway.py +1124 -0
- skep-1.0.1/tests/supervisor/test_dispatch.py +395 -0
- skep-1.0.1/tests/supervisor/test_document_worker.py +240 -0
- skep-1.0.1/tests/supervisor/test_fastlane.py +135 -0
- skep-1.0.1/tests/supervisor/test_fetch_grant.py +191 -0
- skep-1.0.1/tests/supervisor/test_field_test_v19.py +142 -0
- skep-1.0.1/tests/supervisor/test_field_test_v20.py +180 -0
- skep-1.0.1/tests/supervisor/test_final_pass_guards.py +138 -0
- skep-1.0.1/tests/supervisor/test_forge.py +342 -0
- skep-1.0.1/tests/supervisor/test_gate_cards.py +92 -0
- skep-1.0.1/tests/supervisor/test_git_surface.py +609 -0
- skep-1.0.1/tests/supervisor/test_github.py +185 -0
- skep-1.0.1/tests/supervisor/test_grouped_pr.py +229 -0
- skep-1.0.1/tests/supervisor/test_hermes_import.py +164 -0
- skep-1.0.1/tests/supervisor/test_html_text.py +99 -0
- skep-1.0.1/tests/supervisor/test_install_script.py +49 -0
- skep-1.0.1/tests/supervisor/test_landing_page.py +52 -0
- skep-1.0.1/tests/supervisor/test_launch_plan.py +45 -0
- skep-1.0.1/tests/supervisor/test_linux_egress_e2e.py +151 -0
- skep-1.0.1/tests/supervisor/test_linux_sandbox_docker_smoke_script.py +25 -0
- skep-1.0.1/tests/supervisor/test_linux_sandbox_smoke_script.py +39 -0
- skep-1.0.1/tests/supervisor/test_llm_anthropic.py +256 -0
- skep-1.0.1/tests/supervisor/test_llm_usage.py +112 -0
- skep-1.0.1/tests/supervisor/test_local_release_gates_script.py +36 -0
- skep-1.0.1/tests/supervisor/test_mcp_capabilities.py +103 -0
- skep-1.0.1/tests/supervisor/test_mcp_client.py +207 -0
- skep-1.0.1/tests/supervisor/test_mcp_live.py +459 -0
- skep-1.0.1/tests/supervisor/test_mcp_registry.py +66 -0
- skep-1.0.1/tests/supervisor/test_mcp_servers.py +174 -0
- skep-1.0.1/tests/supervisor/test_memory_cli.py +125 -0
- skep-1.0.1/tests/supervisor/test_memory_store.py +277 -0
- skep-1.0.1/tests/supervisor/test_missing_path_guard.py +110 -0
- skep-1.0.1/tests/supervisor/test_netproxy.py +313 -0
- skep-1.0.1/tests/supervisor/test_netshim.py +123 -0
- skep-1.0.1/tests/supervisor/test_nodes.py +90 -0
- skep-1.0.1/tests/supervisor/test_num_ctx_autosize.py +183 -0
- skep-1.0.1/tests/supervisor/test_observation_harvest.py +117 -0
- skep-1.0.1/tests/supervisor/test_observation_memory.py +144 -0
- skep-1.0.1/tests/supervisor/test_obsidian_sync.py +125 -0
- skep-1.0.1/tests/supervisor/test_ollama_worker.py +147 -0
- skep-1.0.1/tests/supervisor/test_operator_clock.py +49 -0
- skep-1.0.1/tests/supervisor/test_ops_cli.py +200 -0
- skep-1.0.1/tests/supervisor/test_ops_executor.py +184 -0
- skep-1.0.1/tests/supervisor/test_ops_schedules.py +42 -0
- skep-1.0.1/tests/supervisor/test_ops_scopes.py +166 -0
- skep-1.0.1/tests/supervisor/test_ops_worker.py +225 -0
- skep-1.0.1/tests/supervisor/test_outbound_push.py +397 -0
- skep-1.0.1/tests/supervisor/test_package_metadata.py +48 -0
- skep-1.0.1/tests/supervisor/test_packs.py +157 -0
- skep-1.0.1/tests/supervisor/test_parallel.py +131 -0
- skep-1.0.1/tests/supervisor/test_permission_profile.py +98 -0
- skep-1.0.1/tests/supervisor/test_persona.py +113 -0
- skep-1.0.1/tests/supervisor/test_personalities.py +91 -0
- skep-1.0.1/tests/supervisor/test_plugin_promotion.py +70 -0
- skep-1.0.1/tests/supervisor/test_policy.py +242 -0
- skep-1.0.1/tests/supervisor/test_policy_compilation.py +135 -0
- skep-1.0.1/tests/supervisor/test_policy_groups.py +570 -0
- skep-1.0.1/tests/supervisor/test_policy_regression.py +166 -0
- skep-1.0.1/tests/supervisor/test_policy_resolver.py +311 -0
- skep-1.0.1/tests/supervisor/test_policy_schema.py +212 -0
- skep-1.0.1/tests/supervisor/test_policy_templates.py +163 -0
- skep-1.0.1/tests/supervisor/test_post_launch_docs.py +44 -0
- skep-1.0.1/tests/supervisor/test_processes.py +227 -0
- skep-1.0.1/tests/supervisor/test_project_policy_copy.py +95 -0
- skep-1.0.1/tests/supervisor/test_project_policy_store.py +191 -0
- skep-1.0.1/tests/supervisor/test_prompt_schedule_turn.py +164 -0
- skep-1.0.1/tests/supervisor/test_provider_fallback.py +82 -0
- skep-1.0.1/tests/supervisor/test_provider_health.py +138 -0
- skep-1.0.1/tests/supervisor/test_provider_routing.py +147 -0
- skep-1.0.1/tests/supervisor/test_providers.py +135 -0
- skep-1.0.1/tests/supervisor/test_public_run_examples.py +86 -0
- skep-1.0.1/tests/supervisor/test_push_sweep.py +268 -0
- skep-1.0.1/tests/supervisor/test_queen_fileio.py +464 -0
- skep-1.0.1/tests/supervisor/test_reach_index.py +129 -0
- skep-1.0.1/tests/supervisor/test_read_payload_caps.py +120 -0
- skep-1.0.1/tests/supervisor/test_recover.py +185 -0
- skep-1.0.1/tests/supervisor/test_release_checklist.py +198 -0
- skep-1.0.1/tests/supervisor/test_release_hygiene.py +131 -0
- skep-1.0.1/tests/supervisor/test_release_hygiene_scan_script.py +30 -0
- skep-1.0.1/tests/supervisor/test_reliability_script.py +20 -0
- skep-1.0.1/tests/supervisor/test_remediation.py +78 -0
- skep-1.0.1/tests/supervisor/test_repo_refresh.py +191 -0
- skep-1.0.1/tests/supervisor/test_researcher_worker.py +319 -0
- skep-1.0.1/tests/supervisor/test_resume.py +237 -0
- skep-1.0.1/tests/supervisor/test_reverify.py +302 -0
- skep-1.0.1/tests/supervisor/test_reviewer_worker.py +217 -0
- skep-1.0.1/tests/supervisor/test_run_provenance.py +129 -0
- skep-1.0.1/tests/supervisor/test_run_shell.py +229 -0
- skep-1.0.1/tests/supervisor/test_run_status.py +505 -0
- skep-1.0.1/tests/supervisor/test_runtime_plugins.py +318 -0
- skep-1.0.1/tests/supervisor/test_sandbox.py +226 -0
- skep-1.0.1/tests/supervisor/test_sandbox_availability.py +35 -0
- skep-1.0.1/tests/supervisor/test_sandbox_bubblewrap.py +169 -0
- skep-1.0.1/tests/supervisor/test_sandbox_podman.py +159 -0
- skep-1.0.1/tests/supervisor/test_schedule_chaining.py +119 -0
- skep-1.0.1/tests/supervisor/test_schedule_health.py +126 -0
- skep-1.0.1/tests/supervisor/test_scheduler.py +1050 -0
- skep-1.0.1/tests/supervisor/test_scorecard.py +89 -0
- skep-1.0.1/tests/supervisor/test_scorecard_runner.py +100 -0
- skep-1.0.1/tests/supervisor/test_scorecard_script.py +20 -0
- skep-1.0.1/tests/supervisor/test_script_worker.py +282 -0
- skep-1.0.1/tests/supervisor/test_seed_skills.py +398 -0
- skep-1.0.1/tests/supervisor/test_seed_tools.py +151 -0
- skep-1.0.1/tests/supervisor/test_serve.py +476 -0
- skep-1.0.1/tests/supervisor/test_serve_approvals.py +1044 -0
- skep-1.0.1/tests/supervisor/test_serve_auth.py +77 -0
- skep-1.0.1/tests/supervisor/test_serve_chat.py +360 -0
- skep-1.0.1/tests/supervisor/test_serve_chat_tools.py +2677 -0
- skep-1.0.1/tests/supervisor/test_serve_llm.py +269 -0
- skep-1.0.1/tests/supervisor/test_serve_log.py +68 -0
- skep-1.0.1/tests/supervisor/test_serve_notes_tasks.py +229 -0
- skep-1.0.1/tests/supervisor/test_serve_policy.py +1718 -0
- skep-1.0.1/tests/supervisor/test_serve_registry.py +1155 -0
- skep-1.0.1/tests/supervisor/test_serve_setup.py +112 -0
- skep-1.0.1/tests/supervisor/test_serve_ui.py +1755 -0
- skep-1.0.1/tests/supervisor/test_session_approvals.py +72 -0
- skep-1.0.1/tests/supervisor/test_session_policy_rules.py +102 -0
- skep-1.0.1/tests/supervisor/test_setup_template.py +183 -0
- skep-1.0.1/tests/supervisor/test_shell_prefixes.py +193 -0
- skep-1.0.1/tests/supervisor/test_shell_worker.py +123 -0
- skep-1.0.1/tests/supervisor/test_skill_bundle.py +102 -0
- skep-1.0.1/tests/supervisor/test_skill_cli.py +131 -0
- skep-1.0.1/tests/supervisor/test_skill_distribution_cli.py +167 -0
- skep-1.0.1/tests/supervisor/test_skill_lifecycle.py +271 -0
- skep-1.0.1/tests/supervisor/test_skill_md.py +176 -0
- skep-1.0.1/tests/supervisor/test_skill_packs.py +505 -0
- skep-1.0.1/tests/supervisor/test_skill_store.py +154 -0
- skep-1.0.1/tests/supervisor/test_skills.py +169 -0
- skep-1.0.1/tests/supervisor/test_slack_channel.py +97 -0
- skep-1.0.1/tests/supervisor/test_spawner.py +269 -0
- skep-1.0.1/tests/supervisor/test_steering.py +110 -0
- skep-1.0.1/tests/supervisor/test_store_concurrency.py +86 -0
- skep-1.0.1/tests/supervisor/test_style_tokens.py +271 -0
- skep-1.0.1/tests/supervisor/test_surface_parity.py +332 -0
- skep-1.0.1/tests/supervisor/test_telegram_channel.py +149 -0
- skep-1.0.1/tests/supervisor/test_template_cli.py +876 -0
- skep-1.0.1/tests/supervisor/test_template_schedule.py +358 -0
- skep-1.0.1/tests/supervisor/test_template_store.py +240 -0
- skep-1.0.1/tests/supervisor/test_templates.py +213 -0
- skep-1.0.1/tests/supervisor/test_tool_index.py +294 -0
- skep-1.0.1/tests/supervisor/test_units.py +265 -0
- skep-1.0.1/tests/supervisor/test_usage.py +29 -0
- skep-1.0.1/tests/supervisor/test_verifier_worker.py +160 -0
- skep-1.0.1/tests/supervisor/test_verify_before_victory.py +147 -0
- skep-1.0.1/tests/supervisor/test_version_history.py +22 -0
- skep-1.0.1/tests/supervisor/test_voice.py +122 -0
- skep-1.0.1/tests/supervisor/test_webhooks.py +148 -0
- skep-1.0.1/tests/supervisor/test_websearch.py +348 -0
- skep-1.0.1/tests/supervisor/test_wedged_chat.py +136 -0
- skep-1.0.1/tests/supervisor/test_worker_capabilities.py +1965 -0
- skep-1.0.1/tests/supervisor/test_worker_contract_ownership.py +71 -0
- skep-1.0.1/tests/supervisor/test_worker_protocol.py +145 -0
- skep-1.0.1/tests/supervisor/test_worker_runtime.py +17 -0
- skep-1.0.1/tests/supervisor/test_workon.py +162 -0
- skep-1.0.1/tests/test_personal_mode.py +359 -0
- skep-1.0.1/uv.lock +1836 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Something skep did wrong — a crash, a wrong verdict, a stuck run
|
|
4
|
+
labels: bug
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**What happened**
|
|
8
|
+
|
|
9
|
+
**What you expected**
|
|
10
|
+
|
|
11
|
+
**Environment**
|
|
12
|
+
|
|
13
|
+
- `skep --version`:
|
|
14
|
+
- OS and sandbox backend (paste the `skep doctor` output):
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
(skep doctor output here)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Reproduction**
|
|
21
|
+
|
|
22
|
+
Steps, or the failing command. If a run is involved, the run id and the
|
|
23
|
+
relevant lines from the run view help a lot.
|
|
24
|
+
|
|
25
|
+
**Safety note**
|
|
26
|
+
|
|
27
|
+
If this looks exploitable (sandbox escape, approval bypass, allowlist
|
|
28
|
+
bypass), do NOT file it here — see [SECURITY.md](../../SECURITY.md).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Question / configuration help
|
|
3
|
+
about: How do I…? Why does my setup…?
|
|
4
|
+
labels: question
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**What are you trying to do**
|
|
8
|
+
|
|
9
|
+
**What you tried**
|
|
10
|
+
|
|
11
|
+
**Environment**
|
|
12
|
+
|
|
13
|
+
- `skep --version`:
|
|
14
|
+
- `skep doctor` output (redact anything private):
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
(skep doctor output here)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Check the [docs index](../../docs/README.md) first — quickstart,
|
|
21
|
+
configuration, and the approvals guide answer the most common questions.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
checks:
|
|
9
|
+
name: checks (${{ matrix.os }})
|
|
10
|
+
runs-on: ${{ matrix.os }}
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: astral-sh/setup-uv@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.12"
|
|
20
|
+
- name: Install Linux sandbox backend
|
|
21
|
+
if: runner.os == 'Linux'
|
|
22
|
+
run: |
|
|
23
|
+
sudo apt-get update
|
|
24
|
+
sudo apt-get install -y bubblewrap ripgrep
|
|
25
|
+
- name: Install ripgrep (macOS)
|
|
26
|
+
if: runner.os == 'macOS'
|
|
27
|
+
run: brew install ripgrep
|
|
28
|
+
- name: Sync
|
|
29
|
+
run: uv sync --frozen
|
|
30
|
+
- name: Lint
|
|
31
|
+
run: |
|
|
32
|
+
uv run ruff check .
|
|
33
|
+
uv run ruff format --check src/skep tests scripts
|
|
34
|
+
- name: Types
|
|
35
|
+
run: uv run mypy
|
|
36
|
+
- name: Unit tests
|
|
37
|
+
# TMPDIR outside /tmp is mandatory wherever bubblewrap runs: bwrap
|
|
38
|
+
# tmpfs-masks /tmp, which eats sandbox evidence files and wedges
|
|
39
|
+
# dispatched test runs into worker_timeout (same rule as CLAUDE.md's
|
|
40
|
+
# local gates).
|
|
41
|
+
run: |
|
|
42
|
+
mkdir -p "$HOME/.cache/skep-test-tmp"
|
|
43
|
+
TMPDIR="$HOME/.cache/skep-test-tmp" uv run pytest -m "not smoke and not container"
|
|
44
|
+
- name: First-party smoke
|
|
45
|
+
run: make smoke
|
|
46
|
+
- name: Linux sandbox smoke
|
|
47
|
+
if: runner.os == 'Linux'
|
|
48
|
+
run: UV_CACHE_DIR=.uv-cache scripts/linux-sandbox-smoke.sh
|
|
49
|
+
- name: Release hygiene scan
|
|
50
|
+
if: runner.os == 'Linux'
|
|
51
|
+
env:
|
|
52
|
+
GH_TOKEN: ${{ github.token }}
|
|
53
|
+
run: |
|
|
54
|
+
gh release download --repo gitleaks/gitleaks \
|
|
55
|
+
--pattern 'gitleaks_*_linux_x64.tar.gz' --output - | tar -xz gitleaks
|
|
56
|
+
sudo mv gitleaks /usr/local/bin/gitleaks
|
|
57
|
+
./scripts/release-hygiene-scan.sh
|
|
58
|
+
|
|
59
|
+
image:
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
permissions:
|
|
62
|
+
contents: read
|
|
63
|
+
packages: write
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v4
|
|
66
|
+
- name: Build and boot-check image
|
|
67
|
+
run: |
|
|
68
|
+
SKEP_DOCKER_IMAGE=ghcr.io/anmolnoor/skep:ci \
|
|
69
|
+
SKEP_DOCKER_CONTAINER=skep-ci \
|
|
70
|
+
SKEP_DOCKER_PORT=8765 \
|
|
71
|
+
scripts/docker-image-smoke.sh
|
|
72
|
+
- name: Push on tag
|
|
73
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
74
|
+
run: |
|
|
75
|
+
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
|
|
76
|
+
docker tag ghcr.io/anmolnoor/skep:ci "ghcr.io/anmolnoor/skep:${{ github.ref_name }}"
|
|
77
|
+
docker tag ghcr.io/anmolnoor/skep:ci ghcr.io/anmolnoor/skep:latest
|
|
78
|
+
docker push "ghcr.io/anmolnoor/skep:${{ github.ref_name }}"
|
|
79
|
+
docker push ghcr.io/anmolnoor/skep:latest
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
# Manual trigger runs the TestPyPI rehearsal lane only (see the
|
|
8
|
+
# testpypi-rehearsal job); it can never publish to real PyPI or cut a
|
|
9
|
+
# GitHub release.
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release-gate:
|
|
14
|
+
name: Release gate
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- uses: astral-sh/setup-uv@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
- name: Install Linux sandbox backend
|
|
22
|
+
run: |
|
|
23
|
+
sudo apt-get update
|
|
24
|
+
sudo apt-get install -y bubblewrap ripgrep
|
|
25
|
+
- name: Sync
|
|
26
|
+
run: uv sync --frozen
|
|
27
|
+
- name: Install gitleaks
|
|
28
|
+
env:
|
|
29
|
+
GH_TOKEN: ${{ github.token }}
|
|
30
|
+
run: |
|
|
31
|
+
gh release download --repo gitleaks/gitleaks \
|
|
32
|
+
--pattern 'gitleaks_*_linux_x64.tar.gz' --output - | tar -xz gitleaks
|
|
33
|
+
sudo mv gitleaks /usr/local/bin/gitleaks
|
|
34
|
+
- name: Gate
|
|
35
|
+
# TMPDIR outside /tmp, same rule as ci.yml's unit tests and
|
|
36
|
+
# CLAUDE.md's local gates: bwrap tmpfs-masks /tmp.
|
|
37
|
+
run: |
|
|
38
|
+
mkdir -p "$HOME/.cache/skep-test-tmp"
|
|
39
|
+
TMPDIR="$HOME/.cache/skep-test-tmp" UV_CACHE_DIR=.uv-cache scripts/local-release-gates.sh
|
|
40
|
+
|
|
41
|
+
package:
|
|
42
|
+
needs: release-gate
|
|
43
|
+
# Tags only — a manual dispatch must never reach the GitHub-release step.
|
|
44
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
permissions:
|
|
47
|
+
contents: write
|
|
48
|
+
id-token: write
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v4
|
|
51
|
+
- uses: astral-sh/setup-uv@v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.12"
|
|
54
|
+
- name: Build distribution
|
|
55
|
+
run: uv build
|
|
56
|
+
- name: Check distribution metadata
|
|
57
|
+
run: uvx twine check dist/*
|
|
58
|
+
- name: Install built wheel smoke
|
|
59
|
+
run: UV_CACHE_DIR=.uv-cache scripts/package-install-smoke.sh
|
|
60
|
+
# Publishes via the PyPI trusted publisher (Anmolnoor/skep +
|
|
61
|
+
# release.yml, configured at LAUNCH-1-L7); id-token: write above is the
|
|
62
|
+
# OIDC half of that handshake.
|
|
63
|
+
- name: Publish to PyPI
|
|
64
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
65
|
+
- name: Create GitHub release
|
|
66
|
+
uses: softprops/action-gh-release@v2
|
|
67
|
+
with:
|
|
68
|
+
files: |
|
|
69
|
+
dist/skep-*.tar.gz
|
|
70
|
+
dist/skep-*-py3-none-any.whl
|
|
71
|
+
generate_release_notes: true
|
|
72
|
+
|
|
73
|
+
# v37-F1: the publish rehearsal. Manual-only; exercises the exact trusted-
|
|
74
|
+
# publisher OIDC path against test.pypi.org with zero public commitment.
|
|
75
|
+
# Requires a TestPyPI trusted publisher (repository Anmolnoor/skep,
|
|
76
|
+
# workflow release.yml) — see docs/releases/README.md "Go/no-go".
|
|
77
|
+
testpypi-rehearsal:
|
|
78
|
+
needs: release-gate
|
|
79
|
+
if: github.event_name == 'workflow_dispatch'
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
permissions:
|
|
82
|
+
id-token: write
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@v4
|
|
85
|
+
- uses: astral-sh/setup-uv@v5
|
|
86
|
+
with:
|
|
87
|
+
python-version: "3.12"
|
|
88
|
+
- name: Build distribution
|
|
89
|
+
run: uv build
|
|
90
|
+
- name: Check distribution metadata
|
|
91
|
+
run: uvx twine check dist/*
|
|
92
|
+
- name: Publish to TestPyPI
|
|
93
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
94
|
+
with:
|
|
95
|
+
repository-url: https://test.pypi.org/legacy/
|
skep-1.0.1/.gitignore
ADDED
skep-1.0.1/CLAUDE.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# skep — assistant context
|
|
2
|
+
|
|
3
|
+
Local-first autonomous coding supervisor. A Queen (chat daemon) dispatches
|
|
4
|
+
disposable, contract-governed workers into isolated git worktrees; every side
|
|
5
|
+
effect goes through the policy/capability engine; completed work lands as a
|
|
6
|
+
**patch via a human approval** — landing IS the commit.
|
|
7
|
+
|
|
8
|
+
## Non-negotiable safety posture
|
|
9
|
+
|
|
10
|
+
Patch-as-approval, supervisor-side re-verification (G10), the Queen/worker
|
|
11
|
+
split, the trust engine, no shadow permission systems. Workers can NEVER push,
|
|
12
|
+
pull, fetch, or switch branches (guards: v19-F3/F5) — no allowlist, grant, or
|
|
13
|
+
verify label overrides those denies, and the same list binds the Queen
|
|
14
|
+
(v83-F9). `git add`/`git commit` are denied through `shell.run` (v22-F2) but
|
|
15
|
+
grantable via the explicit `git.stage`/`git.commit` capability path — safe
|
|
16
|
+
because the worktree is disposable and the patch diffs against the startup
|
|
17
|
+
baseline, not because it is absolute (see I4). G10 re-verifies with the
|
|
18
|
+
project's pinned `verify_command`, not the worker's own nomination (v88-F4) —
|
|
19
|
+
re-running the worker's choice of command is still trusting it. Since v91-F1
|
|
20
|
+
project setup infers that pin from the repo's own entry point, so it is the
|
|
21
|
+
default; a repo with no detectable entry point is pinned to nothing on
|
|
22
|
+
purpose and keeps the worker-nominated fallback.
|
|
23
|
+
|
|
24
|
+
## Gates (run after every fix commit, all green before moving on)
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
TMPDIR=$HOME/.cache/skep-test-tmp uv run pytest # TMPDIR outside /tmp is
|
|
28
|
+
uv run ruff check . # MANDATORY on Linux: bwrap
|
|
29
|
+
uv run ruff format --check src/skep tests scripts # tmpfs-masks /tmp
|
|
30
|
+
uv run mypy
|
|
31
|
+
TMPDIR=$HOME/.cache/skep-test-tmp uv run python scripts/scorecard.py # Overall: PASS
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
(`ruff format --check` joined the list at LAUNCH-1: CI always ran it, the
|
|
35
|
+
local ritual never did, and 174 files drifted before the public repo's first
|
|
36
|
+
CI run caught it.)
|
|
37
|
+
|
|
38
|
+
The suite is fully green — NO pre-existing failures are allowed. (History: the
|
|
39
|
+
stale-links failure was fixed in v27-F1; the Linux per-domain egress skip —
|
|
40
|
+
v14-7 — was closed in v28, so `test_default_coding_worker_uses_saved_
|
|
41
|
+
assistant_llm_config` now passes on Linux. Any failure is yours.)
|
|
42
|
+
|
|
43
|
+
## How this project evolves
|
|
44
|
+
|
|
45
|
+
Every new plan and ADR starts from `docs/invariants.md` — the traits that
|
|
46
|
+
must never be traded away (Part I + review checklist) and the refinement
|
|
47
|
+
backlog (Part II). Cite the invariant numbers a change touches.
|
|
48
|
+
|
|
49
|
+
**A new mutating verb needs an operator face** (ADR 0050, v104): reachable
|
|
50
|
+
from the chat tool surface AND from the CLI or REST. Four rounds fixed this
|
|
51
|
+
one key at a time (v94-F5, v100-F9, v101-F13, v104) before it became a rule —
|
|
52
|
+
I5 says one authorization boundary, not that the operator gets the narrow half
|
|
53
|
+
of it. `tests/supervisor/test_surface_parity.py` enforces it; genuine
|
|
54
|
+
exceptions go in its `CHAT_ONLY` map with a reason.
|
|
55
|
+
|
|
56
|
+
Field test → reconstruct findings from the store/audit trail → write an
|
|
57
|
+
executor-style plan in `plans/vNN/README.md` (observed failure, root cause
|
|
58
|
+
with file:line anchors, change, tests, acceptance) → implement fix-by-fix,
|
|
59
|
+
one commit per fix (`vNN-F<N>: title`) → push to main. History:
|
|
60
|
+
|
|
61
|
+
- v1–v17: the roadmap (v12–v17 implemented in one unattended run; the
|
|
62
|
+
authoritative record is `plans/EXECUTION_LEDGER.md`).
|
|
63
|
+
- v19–v24: field-test friction fixes. Read `plans/v19/README.md` for the
|
|
64
|
+
house-rules briefing every later plan inherits, and skim v20→v24 for the
|
|
65
|
+
landing/policy arc. v18 (public release) is intentionally not done.
|
|
66
|
+
- Resolved (v30, was the v24 deferral): maintain-phase auto-apply accumulates
|
|
67
|
+
on ONE integration branch `skep/maintain` (project policy `auto_apply_branch`,
|
|
68
|
+
constrained to the `skep/` namespace); other phases keep per-task
|
|
69
|
+
`skep/<task_id>`. `main` never advances automatically. The landing branch is
|
|
70
|
+
persisted on the approval (`approvals.landing_branch`) so `applied_branch`
|
|
71
|
+
is accurate for every landing path.
|
|
72
|
+
|
|
73
|
+
## Operational notes
|
|
74
|
+
|
|
75
|
+
- Operator state lives in `~/.skep` (sqlite store, serve token, registered
|
|
76
|
+
repos incl. the `skep-testing` test repo). NEVER mutate it in tests — use a
|
|
77
|
+
temp home. Server: `uv run skep serve` (port 8765, log `~/.skep/serve.log`).
|
|
78
|
+
- `make` is not installed on the dev machine; call scripts via `uv run`.
|
|
79
|
+
- Container builds use podman (docker CLI points at an absent Docker Desktop).
|
|
80
|
+
- The chat Queen runs a small model (glm-5.2 via ollama.com); it skims tool
|
|
81
|
+
descriptions — treat tool descriptions as load-bearing code and keep them
|
|
82
|
+
truthful (a stale preset description once caused repeated "hallucinations").
|
|
83
|
+
- The UI is a NO-BUILD static app (`src/skep/supervisor/serve/static/`) — no
|
|
84
|
+
bundler, no npm; plain ES modules + CSS tokens; fonts vendored.
|
|
85
|
+
- Skills (v85): `skep skill shelf add <dir>` registers external Agent Skills
|
|
86
|
+
shelves (`~/.claude/skills` convention) — instruction packs load zero-grant;
|
|
87
|
+
script-shipping packs draft onto the v17 ladder (`skill_packs.py`, ADR 0045)
|
|
88
|
+
and activate only via `skep skill promote` / the `promote_skill_pack` card.
|
|
89
|
+
- Coding engines (v90, ADR 0047; hardened v94): the `coding_engine`
|
|
90
|
+
project-policy key picks which agent runs a coding task — `builtin` (skep's
|
|
91
|
+
own worker, defers to `SKEP_WORKER_CMD`/`--worker-cmd`) or a CLI adapter
|
|
92
|
+
(`claude_code`, `codex`, `aider`); set it with `skep project setup --engine`
|
|
93
|
+
(v94-F5), from chat via `setup_project engine=`, or per-dispatch via
|
|
94
|
+
`dispatch_run engine=` — an explicit per-dispatch choice always cards
|
|
95
|
+
(v95-F3/F4). An external agent's own commands do NOT pass the capability layer —
|
|
96
|
+
the sandbox confines it — so it requires a project-pinned `verify_command`
|
|
97
|
+
(its built-in verify is `git diff --check`), is FORCED into sandbox execution
|
|
98
|
+
(v94-F4), and declares the env it needs in the engine registry (v94-F3:
|
|
99
|
+
claude_code needs USER/LOGNAME for keychain auth). `skep doctor` probes each
|
|
100
|
+
binary. Re-verify primes uv deps from the baseline before applying the patch
|
|
101
|
+
so the default `uv run pytest` pin confirms offline (v94-F7).
|
|
102
|
+
- The command deck (v25): chat messages starting with `/` are parsed client-side
|
|
103
|
+
(`COMMANDS` in app.js) and mapped onto existing verbs — the model never sees
|
|
104
|
+
them. Mutations become `chat_actions` rows with `source='operator'`, resolved
|
|
105
|
+
on `/api/chats/{id}/commands/{action_id}/confirm|deny` under actor
|
|
106
|
+
`operator-command`. `/workon <path>` is the local-dir on-ramp (confirmed git
|
|
107
|
+
baseline, then project setup). Keep `COMMANDS`, the executor, and `/help` in
|
|
108
|
+
lockstep — a test pins the table against the parser branches.
|
|
109
|
+
|
|
110
|
+
## Where to look first
|
|
111
|
+
|
|
112
|
+
`plans/` (all plans + `EXECUTION_LEDGER.md`), `docs/version-history.md`,
|
|
113
|
+
`src/skep/supervisor/policy_resolver.py` (run policy), `serve/actions.py`
|
|
114
|
+
(shared verbs), `serve/tools.py` (chat tool surface), `workers/capabilities.py`
|
|
115
|
+
(worker-side gates), `apply.py` (landing).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for working on Skep. This project is a local supervisor for coding
|
|
4
|
+
agents, so changes should preserve the core safety model: sandbox when requested,
|
|
5
|
+
record durable evidence, re-verify claims, and land patches only through review.
|
|
6
|
+
|
|
7
|
+
## Development Setup
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
git clone https://github.com/Anmolnoor/skep.git
|
|
11
|
+
cd skep
|
|
12
|
+
uv sync --frozen
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Run the full default gate before opening a pull request:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
make all
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
That runs lint, type checking, and the default test suite. The default suite is
|
|
22
|
+
hermetic: no live model, no credentials, no network dependency, and no Docker.
|
|
23
|
+
|
|
24
|
+
## Focused Checks
|
|
25
|
+
|
|
26
|
+
Use the smallest relevant check while iterating:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
make lint
|
|
30
|
+
make type
|
|
31
|
+
uv run pytest tests/supervisor/test_reverify.py
|
|
32
|
+
uv run pytest tests/supervisor/test_sandbox_bubblewrap.py
|
|
33
|
+
make smoke
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Use opt-in checks only when the change touches that surface:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
make container
|
|
40
|
+
make image
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`make container` needs Docker. `make image` builds the local container image.
|
|
44
|
+
|
|
45
|
+
## Coding Standards
|
|
46
|
+
|
|
47
|
+
- Keep changes surgical and tied to the issue or roadmap item.
|
|
48
|
+
- Add or update tests for behavior changes.
|
|
49
|
+
- Prefer existing supervisor, worker-contract, and serve APIs over new
|
|
50
|
+
abstractions.
|
|
51
|
+
- Keep user-facing docs honest about what is physically enforced, what is policy,
|
|
52
|
+
and what is planned.
|
|
53
|
+
- Do not add secrets, local state, screenshots, build output, or machine-specific
|
|
54
|
+
launcher files.
|
|
55
|
+
|
|
56
|
+
## Security Model Expectations
|
|
57
|
+
|
|
58
|
+
When changing worker execution, approval, sandboxing, or re-verification, include
|
|
59
|
+
tests that prove the failure path:
|
|
60
|
+
|
|
61
|
+
- sandbox unavailable means the worker does not silently start unsandboxed in
|
|
62
|
+
sandbox mode
|
|
63
|
+
- unconfirmed re-verification blocks auto-approval
|
|
64
|
+
- denied approvals stop or leave the run pending without granting the action
|
|
65
|
+
- workers do not mutate the user's active checkout or default branch directly
|
|
66
|
+
|
|
67
|
+
## Pull Request Notes
|
|
68
|
+
|
|
69
|
+
In the PR description, include:
|
|
70
|
+
|
|
71
|
+
- what changed
|
|
72
|
+
- how it was verified
|
|
73
|
+
- any safety boundary affected
|
|
74
|
+
- any known limits or follow-up work
|
|
75
|
+
|
|
76
|
+
Keep generated artifacts out of the diff unless they are the actual deliverable.
|
skep-1.0.1/Dockerfile
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# The box. Build from this skep checkout:
|
|
2
|
+
#
|
|
3
|
+
# docker build -f Dockerfile -t ghcr.io/anmolnoor/skep .
|
|
4
|
+
#
|
|
5
|
+
# or `make image`.
|
|
6
|
+
#
|
|
7
|
+
# One runtime stage. A node stage does not exist at all (the UI is no-build
|
|
8
|
+
# static files, RFC decision 1).
|
|
9
|
+
|
|
10
|
+
FROM python:3.12-slim
|
|
11
|
+
|
|
12
|
+
# git: worktrees + repo clones. bubblewrap: Linux sandbox. gh: the PR action (U1 land).
|
|
13
|
+
# curl: gh's apt repo.
|
|
14
|
+
RUN apt-get update \
|
|
15
|
+
&& apt-get install -y --no-install-recommends git bubblewrap curl ca-certificates \
|
|
16
|
+
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
|
|
17
|
+
-o /usr/share/keyrings/githubcli-archive-keyring.gpg \
|
|
18
|
+
&& echo "deb [arch=$(dpkg --print-architecture) \
|
|
19
|
+
signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] \
|
|
20
|
+
https://cli.github.com/packages stable main" \
|
|
21
|
+
> /etc/apt/sources.list.d/github-cli.list \
|
|
22
|
+
&& apt-get update \
|
|
23
|
+
&& apt-get install -y --no-install-recommends gh \
|
|
24
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
25
|
+
|
|
26
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
27
|
+
ENV UV_PYTHON_DOWNLOADS=never
|
|
28
|
+
|
|
29
|
+
WORKDIR /opt/skep
|
|
30
|
+
COPY . .
|
|
31
|
+
|
|
32
|
+
RUN uv sync --frozen --no-dev
|
|
33
|
+
|
|
34
|
+
# Everything skep writes lives under SKEP_HOME -> one disposable volume (D2).
|
|
35
|
+
ENV PATH="/opt/skep/.venv/bin:${PATH}" \
|
|
36
|
+
SKEP_HOME=/data/skep
|
|
37
|
+
|
|
38
|
+
VOLUME /data
|
|
39
|
+
EXPOSE 8765
|
|
40
|
+
|
|
41
|
+
ENTRYPOINT ["skep", "serve", "--host", "0.0.0.0", "--port", "8765"]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# BuildKit per-Dockerfile ignore. The build context is this skep checkout.
|
|
2
|
+
.git
|
|
3
|
+
.venv
|
|
4
|
+
# Dev state carries secrets (llm-secret, serve-token) — never bake it in.
|
|
5
|
+
.skep-dev*
|
|
6
|
+
.uv-cache
|
|
7
|
+
__pycache__
|
|
8
|
+
.pytest_cache
|
|
9
|
+
.mypy_cache
|
|
10
|
+
.ruff_cache
|
|
11
|
+
.DS_Store
|
|
12
|
+
dist
|
|
13
|
+
build
|
|
14
|
+
*.egg-info
|
|
15
|
+
output
|
|
16
|
+
node_modules
|
|
17
|
+
plans
|
|
18
|
+
plan
|
|
19
|
+
.claude
|
skep-1.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Anmol Noor
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
skep-1.0.1/Makefile
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
.PHONY: all lint format type unit smoke test u1 templates skills public-free whole-app-external container image image-smoke linux-sandbox-docker-smoke docs-link-smoke release-hygiene-scan local-release-gates serve scorecard
|
|
2
|
+
|
|
3
|
+
all: lint type test
|
|
4
|
+
|
|
5
|
+
lint:
|
|
6
|
+
uv run ruff check .
|
|
7
|
+
uv run ruff format --check src/skep tests scripts
|
|
8
|
+
|
|
9
|
+
format:
|
|
10
|
+
uv run ruff check --fix .
|
|
11
|
+
uv run ruff format src/skep tests scripts
|
|
12
|
+
|
|
13
|
+
type:
|
|
14
|
+
uv run mypy
|
|
15
|
+
|
|
16
|
+
unit:
|
|
17
|
+
uv run pytest -m "not smoke and not container"
|
|
18
|
+
|
|
19
|
+
# Default smoke: first-party skep paths only.
|
|
20
|
+
smoke:
|
|
21
|
+
uv run pytest tests/smoke -m smoke
|
|
22
|
+
|
|
23
|
+
# The v3 acceptance demo (U1): the nightly dependency/audit bot — scheduled,
|
|
24
|
+
# audit caste, G10 re-verified, D3 auto-approval active. Deterministic, offline.
|
|
25
|
+
u1:
|
|
26
|
+
uv run pytest tests/smoke/test_u1_acceptance.py -m smoke -v
|
|
27
|
+
|
|
28
|
+
# The v3.5 acceptance demo: author a workflow template once, then both run it on
|
|
29
|
+
# demand AND bind it to a schedule. Deterministic, offline (audit caste).
|
|
30
|
+
templates:
|
|
31
|
+
uv run pytest tests/smoke/test_templates_acceptance.py -m smoke -v
|
|
32
|
+
|
|
33
|
+
# The v4 acceptance demo: from observed successful runs, GENERATE a candidate skill,
|
|
34
|
+
# TEST it (G10 gate), a human APPROVES it into the registry, then run AND schedule it
|
|
35
|
+
# exactly like a v3.5 template — and prove a failed-test or denied candidate NEVER
|
|
36
|
+
# enters the registry. Deterministic, offline (audit caste).
|
|
37
|
+
skills:
|
|
38
|
+
uv run pytest tests/smoke/test_skills_acceptance.py -m smoke -v
|
|
39
|
+
|
|
40
|
+
# The v11 public-free acceptance demo: preview/save the first-party pack,
|
|
41
|
+
# confirm zero-cost assumptions, seed templates/schedules, and dispatch once.
|
|
42
|
+
public-free:
|
|
43
|
+
uv run pytest tests/smoke/test_public_free_acceptance.py -m smoke -v
|
|
44
|
+
|
|
45
|
+
# Opt-in whole-app proof against a real external provider — needs OLLAMA_API_KEY,
|
|
46
|
+
# a running Docker daemon; never the gate.
|
|
47
|
+
whole-app-external:
|
|
48
|
+
@test -n "$$OLLAMA_API_KEY" || (echo "OLLAMA_API_KEY is required" >&2; exit 2)
|
|
49
|
+
SKEP_WHOLE_APP_EXTERNAL=1 uv run pytest tests/external/test_whole_app_external.py -m external_app --override-ini "addopts=" -v
|
|
50
|
+
|
|
51
|
+
# The v5 acceptance demo: the whole loop over the HTTP API — boot, token auth,
|
|
52
|
+
# assign, SSE-stream the events, approve (patch lands on a branch), edit a
|
|
53
|
+
# policy.
|
|
54
|
+
serve:
|
|
55
|
+
uv run pytest \
|
|
56
|
+
tests/supervisor/test_serve.py \
|
|
57
|
+
tests/supervisor/test_serve_approvals.py \
|
|
58
|
+
tests/supervisor/test_serve_policy.py \
|
|
59
|
+
-q
|
|
60
|
+
|
|
61
|
+
# The v12 autonomy scorecard: run the deterministic trust-loop suites and emit
|
|
62
|
+
# output/scorecard/scorecard.{json,md}. Fails (non-zero) on any verdict drift.
|
|
63
|
+
scorecard:
|
|
64
|
+
uv run python scripts/scorecard.py
|
|
65
|
+
|
|
66
|
+
test:
|
|
67
|
+
uv run pytest
|
|
68
|
+
|
|
69
|
+
# Opt-in container portability proof (Q1-B) — needs Docker, never the gate.
|
|
70
|
+
container:
|
|
71
|
+
SKEP_CONTAINER=1 uv run pytest -m container --override-ini "addopts=" -v
|
|
72
|
+
|
|
73
|
+
# The box: build the image from this skep checkout.
|
|
74
|
+
image:
|
|
75
|
+
docker build -f Dockerfile -t ghcr.io/anmolnoor/skep:dev .
|
|
76
|
+
|
|
77
|
+
image-smoke:
|
|
78
|
+
scripts/docker-image-smoke.sh
|
|
79
|
+
|
|
80
|
+
linux-sandbox-docker-smoke:
|
|
81
|
+
scripts/linux-sandbox-docker-smoke.sh
|
|
82
|
+
|
|
83
|
+
docs-link-smoke:
|
|
84
|
+
uv run python scripts/docs-link-smoke.py
|
|
85
|
+
|
|
86
|
+
release-hygiene-scan:
|
|
87
|
+
scripts/release-hygiene-scan.sh
|
|
88
|
+
|
|
89
|
+
local-release-gates:
|
|
90
|
+
scripts/local-release-gates.sh
|