sandstream/kit

GitHub: sandstream/kit

kit 是一款本地优先、零 LLM 的安全优先开发者 CLI,通过声明式配置统一管理项目工具、服务认证、密钥和初始化流程。

Stars: 0 | Forks: 0

# kit 面向 AI agent 和人类。管理工具、认证、密钥和项目设置。零 LLM 调用,本地优先,多保险库。 🌐 [sandstre.am/kit](https://sandstre.am/kit) ``` npx sandstream-kit setup ``` ## 问题 每次你(或 agent)开始一个新项目时: - 缺少 CLI 工具(supabase、vercel、eas、gcloud...) - 未登录服务 - 缺少 API 密钥和机密 - 版本错误 - 不知道需要什么 ## 为什么会有 kit 同样的障碍反复出现,无论是对于换了一台新笔记本的人类,还是对于刚拉取了全新代码库的 AI agent:API 密钥散落在各种 `.env` 文件、shell 历史记录和密码管理器中(有些有效,有些已过期,没有一个能集中管理);相同的设置提示浪费着 token,去重新发现上次会话已经知道的内容;而 agent 仅需一次 `npm install`,就可能拉取一个无人审查的包。 kit 让“安全地让这个项目跑起来”变得声明式且可复现:一份配置以相同的方式每次具现化工具、登录和密钥,将凭证保存在保险库中而不是到处乱放,并在新依赖项前加入安装前的 **triage(审查)** 步骤,以便在引入未知的包之前对其进行检查。零 LLM 调用,本地优先,无遥测,智能保留在你放置它的地方。 ## 解决方案 每个项目使用 `.kit.toml`: ``` [tools] node = "22" pnpm = "latest" supabase = "2.78" [services.supabase] login = "supabase login" check = "supabase projects list" link = "supabase link --project-ref {project_ref}" project_ref = "your-project-ref" [services.vercel] login = "vercel login" check = "vercel whoami" [services.stripe] login = "stripe login" check = "stripe config --list" # auth strategy 会被推断(此处为 interactive,因为存在 `login` 命令); # 显式覆盖方式为:auth = "vault" | "capture" | "interactive" # `kit login --plan` 会在登录前显示每个服务的 resolved strategy。 [secrets] store = "1password" # or env, dotenvx, vault, aws-sm, gcp-sm, azure-kv, infisical, doppler, bitwarden, eas template = ".env.template" [secrets.keys] SUPABASE_URL = { source = "config", value = "https://{supabase.project_ref}.supabase.co" } STRIPE_SECRET_KEY = { source = "1password", ref = "op://Development/Stripe/secret-key" } REVENUECAT_KEY = { source = "eas", name = "REVENUECAT_APPLE_API_KEY" } [setup] install = "pnpm install" migrate = "supabase db push" seed = "pnpm seed" verify = "pnpm dev & sleep 5 && curl localhost:3000" ``` ## 命令 完整参考:[`docs/COMMANDS.md`](./docs/COMMANDS.md)。简要列表: - `kit init`:自动检测项目技术栈 → 生成 `.kit.toml` - `kit setup`:完整流水线:install → hooks → login → secrets → check - `kit check`:检查工具、服务、密钥、钩子、安全和测试的状态 - `kit fix`:自动修复缺陷(工具、gitignore、hooks、.env.template) - `kit login --plan`:在不登录的情况下,显示每个服务已确定的认证策略(vault/capture/interactive) - `kit secrets {set,migrate,rotate,propagate,onecli,validate}`:密钥生命周期 - `kit memory {index,search,suggest,pal,share,backup}`:本地优先的第二大脑 + 待办操作账本 - `kit auth {elevate,setup-totp,status,revoke}`:提权门控 + TOTP - `kit mcp {list,auth,set-token,clear}`:MCP-server 编排器 - `kit env {list,switch,current,diff}`:环境路由 + 偏差检测 - `kit triage {npm,pip,docker,repo,skill}`:安装前安全检查 - `kit security {scan-build,scan-staged,verify-pull,costs,policy}`:安全运维 - `kit hooks {install,add,sync}`:Git hooks + 绕过检测器 - `kit governance` / `kit audit`:策略 + 审计日志检查 - `kit --read-only `:在会话范围内拒绝所有写入操作 ### 你将看到的内容 `kit init`,检测技术栈,预览 `.kit.toml`,然后运行设置: ``` kit init ────────────────────────────────────────────────── ✓ Detected: TypeScript / Next.js (confidence: 92%) Preview, .kit.toml + [tools] + node = "22" ... ✓ Generated .kit.toml ``` `kit setup`,六阶段流水线,每个阶段都以上一阶段为关卡: ``` kit setup ────────────────────────────────────────────────── [1/6] Install ✓ node installed v22.22.2 [2/6] Git Hooks ✓ pre-commit installed [3/6] Login ✓ supabase authenticated [4/6] Secrets ✓ Wrote .env.local (from keys) [5/6] Agent config ✓ Claude Code → CLAUDE.md (created) [6/6] Verify Setup complete, you're ready to go! ✓ ``` 第 5 步会教导仓库中的 agent(Claude Code、Codex、Cursor、Cline)去*使用* kit,它会在 agent 的规则文件(`CLAUDE.md`、`AGENTS.md`、`.cursorrules`、`.clinerules`)中写入一小段受管理的内容:“在 install 前运行 kit check / triage / 将你的机密存入 vault”。你可以随时通过 `kit agent-config` 单独运行它。重新运行时,该代码块会在原处重新生成;你可以自由编辑其标记之外的内容。 `kit check`,带有通过/失败汇总的分组状态表: ``` Tools ✓ node 22.22.2 (need 22) ✗ supabase not installed (need 2.78) Services ✓ vercel authenticated Security ✓ .env gitignored pass all .env patterns in .gitignore ✓ pinned versions pass all dependencies pinned 7/8 checks passed (1 issues) Run kit install to fix tools, kit login to fix auth ``` `kit fix`,六个修复步骤,然后是已修复/需手动处理的汇总: ``` kit fix ────────────────────────────────────────────────── [1/6] Tools ✓ supabase installed v2.78.0 [2/6] Lock Files ✓ Generated cli-lock.json [5/6] .gitignore ✓ Added 2 pattern(s) to .gitignore [6/6] Git Hooks ✓ Installed 1 hook(s): pre-commit Summary ✓ Fixed 4 issue(s) automatically ! 1 issue(s) require manual intervention: • Login to stripe: run 'kit login' or 'stripe login' ``` `kit secrets`,从 vault 中解析每个密钥并写入 `.env.local`: ``` Generating secrets... (env=dev) ✓ SUPABASE_URL resolved Derived from config ✓ STRIPE_SECRET_KEY resolved op://Development/Stripe/secret-key ✗ REVENUECAT_KEY missing not found in eas ✓ Wrote .env.local (from keys) ``` `kit triage `,在安装前给出安全裁决: ``` Running triage on npm: left-pad Health score: 7/10 Critical issues: 0 Warnings: 1 TRIAGE PASSED ``` 信任模型记录在 [`docs/THREAT_MODEL.md`](./docs/THREAT_MODEL.md) 中; 每个命令的数据流向见 [`docs/DATA_FLOW.md`](./docs/DATA_FLOW.md); 发布验证见 [`docs/VERIFY.md`](./docs/VERIFY.md)。 - `kit doctor`:深度诊断:Node.js 版本、mise、.env.local、PATH 中的工具、git hooks - `kit env`:检查 .env.local 中的环境变量(`--show-values`、`--missing`、`--json`) - `kit mcp`:通过 stdio 为 AI 助手运行 MCP server(自动检测:无子命令 + 非 TTY)。在交互模式下,`kit mcp list|auth|set-token|clear` 用于管理已声明的 server - `kit analyze`:检测技术栈 + 根据 git 历史和框架标记生成 `CLAUDE.md` / `RULES.md` 草稿 ### 密钥管理 端到端的密钥生命周期,从 `.env*` 明文发现,到 vault 迁移,再到部署平台同步,最后是破坏性的历史记录清理。 - `kit secrets`:从配置的 vault 存储中具现化 `.env.local` - `kit secrets set --stdin | --value `:直接将值捕获到 vault 中(支持 stdin,绝不经过 argv)。这是服务背后的 `auth = "capture"` 策略的执行方式 - `kit secrets migrate`:将明文凭证从 `.env*` 移动到 vault 中 - `kit secrets rotate `:生成新值(`--random` 不透明 token / `--value ` 显式指定) - `kit secrets rotate --from-cli`:提供商原生操作手册(Stripe / AWS-IAM / GCP-IAM / GitHub PAT / OpenAI) - `kit secrets rotate --via supabase-mgmt-api --project `:通过 Supabase Mgmt API 实现完全自动化。自动检测 scoped-key-mint 还是 jwt-secret-roll。 - `kit secrets propagate --to vercel,github,...`:将值推送到部署目标(通过 `--stdin` 支持 stdin 安全输入) - `kit secrets revoke-old --via supabase-mgmt-api --key-id `:撤销之前生成的 scoped key - `kit secrets onecli register --host `:向 OneCLI gateway 注册,以便 agent 进程永远不会看到真实值 - `kit secrets purge-history --force-history`:破坏性操作:重写 git 历史记录以清除泄漏的值(封装了 `git filter-repo` / `bfg`)。需要提权 + 显式标志。 ### 安全扫描器 - `kit security scan-staged`:pre-commit:扫描暂存区的 blob 以查找已知的凭证模式 - `kit security scan-build`:遍历 `.next/`、`dist/`、`build/` 以查找内联到制品中的凭证(`NEXT_PUBLIC_` 拼写错误) - `kit security scan-transcripts`:遍历 `.claude/`、`~/.claude/projects/`、`.opencode/` 以查找重放密钥导致的泄漏 - `kit security check-gitignore [--fix]`:验证 `.env*`、`*.pem`、`id_rsa`、`.kit/elevation.json` 已被忽略 - `kit security verify-pull [--base ]`:在 `git pull` 之后:审计新依赖、gitignore 删除、引入的密钥、策略变更 - `kit security policy [init|add |check]`:依赖项白名单强制执行 + 每个密钥的支出上限/TTL/scope - `kit security costs`:每个密钥的支出与策略上限的快照对比(Stripe 实时;OpenAI/Anthropic/Resend/Vercel 已打桩) - `kit security clear-cache`:重置缓存的供应链扫描器二进制文件(在有意重新构建后使用) ### 内置 git hooks `kit hooks add ` 会安装一个回调到 kit 的受管理 hook。不需要 `.kit.toml` 配置。 - `secret-scan` (pre-commit):阻止引入已知凭证模式的提交 - `post-pull-audit` (post-merge):在每次 `git pull` / merge 之后运行 `verify-pull` ### 环境与提权 生产凭证受到显式环境切换和短期提权的限制。 - `kit env switch `:切换活动的环境标记 - `kit env current`:显示活动环境(带颜色标识),使用 `kit env list` 查看可用环境 - `kit auth elevate [--scope ] [--ttl-minutes N]`:生成具有 TTL 的提权标记(TOTP 或 yes 确认提示)。在任何破坏性密钥操作之前必需。 - `kit auth setup-totp`:一次性 TOTP 注册(以 0600 权限写入 `~/.kit/totp-secret`) - `kit auth status`:显示当前的提权状态 - `kit auth revoke`:提前取消提权标记 - `kit audit secrets [--since-days N] [--key ]`:取证分析:谁在何时触碰了哪个密钥 ### 质量门控(基线感知) - `kit check --enforce-tests`:当全新新增的源文件缺少同级 `.test.ts` 时失败 - `kit design`:静态 a11y 扫描(img-alt、button-empty、anchor-no-href、input-no-label)+ design-token 一致性检查(绕过原始的 `#hex` / `px`)。使用 `--enforce` 进行门控,`--json` 用于机器输出 - `kit review`:元运行器:在一个命令中执行 `check` + `design`。作为 AI agent 的单一 PR 门控入口点使用 - `kit baseline freeze`:将当前的检查结果(未测试的文件、a11y、token)快照存入 `.kit-baseline.json` 中,使先前存在的警告保持为警告,只有全新新增的检查失败项才会导致失败 - `kit baseline show`:打印当前的基线 ### 供应链 - **Bumblebee**:内置供应链扫描器。根据 `bumblebee.lock.json` 中锁定的 SHA-256 校验和验证每一个依赖项。在复用前重新验证缓存,以便捕获被篡改的本地文件(类别 `integrity`)。在 CI 中的每个 PR 上运行 - `kit triage npm|pip|docker|repo|skill `:通过 triage 技能进行安装前安全评估 - `kit triage npm --sandbox`:离线行为检查:`npm pack` → 解压 → 扫描 install 脚本、eval/base64/网络模式、意外脚本、超大文件。不执行任何代码 - 供应链检查结果会自动附加到 `.kit-audit.jsonl`(每个结果占一行 JSON)以便 SIEM 提取 - 发布版本随附 SLSA 来源(`npm publish --provenance`)、每次 GitHub 发布的 CycloneDX + SPDX SBOMs、cosign 签名的 Docker 镜像,以及每周的 OpenSSF Scorecard ## 记忆 `kit memory` 为 agent 提供了一个本地优先、确定性的第二大脑,它存储你的原始对话历史,并在*回答之前*对其进行搜索,因此它提供的是确凿证据而不是猜测。基于 SQLite + FTS5,只需两个 hook,无向量,无模型调用。 它为**七款**编程 agent(Claude Code、Codex、Gemini、Continue、Cursor、Amazon Q 和 Cline)的记录建立索引,每一条都根据 agent 自身的序列化格式进行解析,绝不靠猜。一个私人的个人层级(加密备份,这样即使笔记本被盗也不会丢失你的上下文),加上一个精心策划、按区域组织的**共享**层级,它会跟随代码库移动并像代码一样被审查。 ``` kit memory install && kit memory index kit memory search "what did we decide about X" # project-scoped recall kit memory area stripe # shared: how we built it, status, security kit memory suggest | your-llm # zero-LLM core; pipe a review prompt to YOUR model ``` 完整参考:[`docs/MEMORY.md`](docs/MEMORY.md)。Schema 和双 hook 设计 归功于 [cloudctx](https://github.com/chadptk1238/cloudctx) (MIT)。 ## 锁定文件 kit 使用 `.kit/` 中的锁定文件来跟踪技能和工具的精确版本: - `.kit/kit.json`:标识此项目使用的 kit(例如,“sandstream/standard@1.3.0”) - `.kit/skills-lock.json`:包含版本和元数据的 Agent 技能 - `.kit/cli-lock.json`:包含版本和安装来源的 CLI 工具 这允许团队将其开发方法编纂成典并进行版本控制,类似于依赖项的 `package-lock.json`。 _BLOCK_9/> ## 服务开通 kit 可以自动为你的项目开通和配置服务,专为原生 agent 工作流设计(无需浏览器): ``` kit add stripe/payments # Set up Stripe with API keys kit add supabase/db # Initialize Supabase project kit add vercel/hosting # Link repository to Vercel ``` ### 工作原理 1. 检查是否已安装并认证了服务 CLI 2. 通过 CLI/API 开通资源(无需浏览器) 3. 提取凭证和配置 4. 将密钥写入 `.env.local` 5. 将开通元数据记录在 `skills-lock.json` 中 ### 可用服务 - **stripe/payments**:使用 Stripe 处理支付 - 要求:`stripe` CLI([安装](https://stripe.com/docs/stripe-cli)) - 开通:API 密钥,创建测试模式配置 - 密钥:`STRIPE_SECRET_KEY`、`STRIPE_PUBLISHABLE_KEY` - 示例: brew install stripe/stripe-cli/stripe stripe login kit add stripe/payments - **supabase/db**:使用 Supabase 进行数据库和认证 - 要求:`supabase` CLI([安装](https://supabase.com/docs/guides/cli)) - 开通:本地开发实例或链接现有项目 - 密钥:`SUPABASE_URL`、`SUPABASE_ANON_KEY`、`SUPABASE_SERVICE_ROLE_KEY` - 示例: brew install supabase/tap/supabase supabase login kit add supabase/db - **vercel/hosting**:使用 Vercel 进行托管和部署 - 要求:`vercel` CLI([安装](https://vercel.com/docs/cli)) - 开通:链接仓库,设置部署 - 密钥:`VERCEL_PROJECT_ID`、`VERCEL_ORG_ID` - 示例: npm i -g vercel vercel login kit add vercel/hosting - **expo/eas**:使用 Expo EAS 构建移动应用 - 要求:`eas` CLI([安装](https://docs.expo.dev/eas/)) - 开通:EAS 项目,构建配置 - 密钥:`EXPO_TOKEN`,EAS 凭证 - 示例: npm i -g eas-cli eas login kit add expo/eas - **searxng/instance**:尊重隐私的搜索引擎 - 要求:`docker` 和 `docker-compose` - 开通:本地 SearXNG 实例 - 密钥:`SEARXNG_URL`、`SEARXNG_SECRET` - 示例: kit add searxng/instance 完整的适配器集合(每个都会开通/复用相关的密钥;运行 `kit add `): | Service | Purpose | |---|---| | `stripe/payments` | Stripe 支付处理(产品 + 价格 ID) | | `supabase/db` | Supabase 数据库 + 认证 | | `vercel/hosting` | Vercel 托管 + 部署 | | `flyio/hosting` | Fly.io 容器部署 | | `railway/hosting` | Railway(Heroku 风格)部署 | | `neon/db` | Neon serverless Postgres | | `planetscale/db` | PlanetScale serverless MySQL | | `upstash/redis` | Upstash serverless Redis | | `cloudflare/r2` | Cloudflare R2 对象存储(兼容 S3) | | `clerk/auth` | Clerk 认证 + 用户管理 | | `resend/email` | Resend 事务性邮件 | | `loops/email` | Loops 营销 + 事务性邮件 | | `sentry/monitoring` | Sentry 错误跟踪 + 性能监控 | | `posthog/analytics` | PostHog 产品分析 + 会话记录 | | `tinybird/analytics` | 基于 ClickHouse 的 Tinybird 实时分析 | | `liveblocks/realtime` | Liveblocks 协作实时功能(状态、光标) | | `trigger/background` | Trigger.dev 后台任务 | | `inngest/background` | Inngest 事件驱动的后台任务 | | `flagsmith/flags` | Flagsmith 功能开关 + 远程配置 | | `expo/eas` | Expo Application Services(移动应用构建) | | `searxng/instance` | 自托管的 SearXNG 搜索引擎 | 使用 `kit create-plugin ` 添加你自己的适配器(请参阅 [docs/PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md))。 ### 示例工作流 **新项目设置:** ``` # 克隆项目 git clone https://github.com/user/my-app cd my-app # 检查所需内容 kit check # 一次性 provision 所有服务 kit add stripe/payments kit add supabase/db kit add vercel/hosting # 验证所有配置 kit check ``` **Agent 驱动的开通:** ``` # Agent 会自动 provision 服务 kit add stripe/payments # → 检查是否已安装 stripe CLI # → 验证身份验证 # → 创建 API keys # → 写入 .env.local # → 更新 skills-lock.json # 检查已 provision 的内容 cat .env.local | grep STRIPE cat skills-lock.json | jq '.provisioned["stripe/payments"]' ``` **创建自定义适配器:** 有关创建自定义服务适配器的完整指南,请参阅 [docs/CUSTOM_ADAPTERS.md](./docs/CUSTOM_ADAPTERS.md)。 **故障排除:** 常见问题及解决方案: - **“未安装必需的工具”**:安装服务的 CLI 工具(参见上面的示例) - **“未认证”**:运行服务的登录命令(例如 `stripe login`) - **“开通失败”**:检查 CLI 是否在你的 PATH 中:`which stripe` - 如需更多帮助,请参阅 [docs/CUSTOM_ADAPTERS.md](./docs/CUSTOM_ADAPTERS.md#troubleshooting) ## Agent 集成 Agent 在启动时运行 `kit check`。如果有任何检查失败: 1. 自动修复可以修复的问题(`kit fix`) 2. 将需要浏览器认证的问题升级交给人类处理(`kit escalate`) 3. 继续处理当前可用的工作 ## 治理与访问控制 kit 包含用于管理 agent 对生产系统访问的治理功能: ``` [governance] enabled = true environment = "dev" # dev, staging, prod [governance.access] dev = { read = true, write = true, delete = true } staging = { read = true, write = true, delete = false } prod = { read = true, write = false, delete = false } [governance.agent] id = "agent-123" name = "Founding Engineer" max_tokens_per_day = 1000000 max_operations_per_hour = 100 [governance.audit] enabled = true log_file = ".kit-audit.jsonl" [governance.approval] destructive_operations = ["delete", "drop", "truncate"] production_writes = true [governance.revocation] enabled = true revocation_endpoint = "https://audit.example.com/agents/{agent_id}/status" ``` ### 功能 - **基于环境的访问控制**:每个环境具有不同的权限 - **审计日志**:所有操作都会记录,并自动隐去密钥 - **预算限制**:跟踪 token(每天)和操作(每小时) - **批准关卡**:针对破坏性操作的交互式提示 - **撤销**:通过 API 检查远程状态 - **密钥过期**:监控并警告即将过期的密钥 ### 环境检测 kit 会自动使用以下方式检测当前环境: 1. **NODE_ENV** 环境变量(最高优先级) 2. **Git 分支**名称(回退机制:main/master→prod,staging→staging,其他→dev) 3. 如果两者均不可用,则**默认**为 dev 在你的 `.env.local` 中设置 NODE_ENV: ``` # 选项:development, staging, production NODE_ENV=development ``` 这会影响治理访问控制、安全策略和审计日志记录。 详情请参阅 [GOVERNANCE.md](./GOVERNANCE.md)。 ## AI 助手设置 kit 将其功能作为 MCP server 公开,使得 Claude Code、Cursor、Windsurf、Cline 以及任何其他兼容 MCP 的 AI 助手可以直接使用它。注册后,助手可以调用 `kit_check`、`kit_fix`、`kit_add` 和其他工具,而无需离开它们的上下文。 ### Claude Code 模板配置包含在 `claude-mcp.json` 中。复制它以激活: ``` cp claude-mcp.json .claude/mcp.json ``` 或者手动添加到 `.claude/mcp.json`(或 `~/.claude/mcp.json` 以应用于所有项目): ``` { "mcpServers": { "kit": { "command": "npx", "args": ["sandstream-kit", "mcp"] } } } ``` 或者如果全局安装了(`npm install -g sandstream-kit`): ``` { "mcpServers": { "kit": { "command": "kit", "args": ["mcp"] } } } ``` ### Cursor `.cursor/mcp.json` 已包含在此 repo 中。对于其他项目,请将其添加到项目根目录的 `.cursor/mcp.json` 中: ``` { "mcpServers": { "kit": { "command": "npx", "args": ["sandstream-kit", "mcp"] } } } ``` ### Windsurf / Cline 在 Windsurf 中,打开 **Settings → MCP Servers** 并添加: ``` { "kit": { "command": "npx", "args": ["sandstream-kit", "mcp"], "transport": "stdio" } } ``` 对于 Cline,请将相同的配置添加到你的 `cline_mcp_settings.json` 中。 ### 可用的 MCP 工具 | Tool | Description | |------|-------------| | `kit_check` | 运行所有检查,返回结构化的状态 JSON | | `kit_install` | 通过 mise 安装缺失的工具 | | `kit_login` | 尝试(以非交互方式)进行服务登录 | | `kit_secrets` | 从配置的来源生成 `.env.local` | | `kit_fix` | 自动修复问题(安装工具,生成锁定文件) | | `kit_add` | 开通服务集成(stripe、supabase 等) | | `kit_env` | 检查 `.env.local`,列出包含已设置/缺失状态及隐去值后的密钥 | ### 示例:kit_check 响应 ``` { "ok": true, "tools": [ { "name": "node", "required": "latest", "installed": "22.22.2", "ok": true } ], "secrets": [ { "name": "APP_NAME", "source": "config", "available": true, "detail": "Derived from config" } ], "security": [ { "category": "secrets", "name": ".env gitignored", "status": "pass", "detail": "all .env patterns in .gitignore" }, { "category": "supply-chain", "name": "pinned versions", "status": "pass", "detail": "all dependencies pinned" } ], "locks": [ { "category": "cli-lock", "exists": true, "inSync": true, "missing": [], "detail": "all tools locked" } ] } ``` ## 社区与支持 ### 获取帮助 - 📚 **插件开发**:[docs/PLUGIN_DEVELOPMENT.md](docs/PLUGIN_DEVELOPMENT.md),[docs/ADAPTER_GUIDE.md](docs/ADAPTER_GUIDE.md),[docs/MCP_TOOLS_GUIDE.md](docs/MCP_TOOLS_GUIDE.md) - 💬 **讨论**:[github.com/sandstream/kit/discussions](https://github.com/sandstream/kit/discussions) - 🐛 **问题**:[github.com/sandstream/kit/issues](https://github.com/sandstream/kit/issues) - 🤝 **贡献**:[CONTRIBUTING.md](CONTRIBUTING.md),[COMMUNITY.md](COMMUNITY.md) ### 行为准则 请参阅 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 ## 技术栈 - [mise-en-place](https://mise.jdx.dev):工具版本管理 - [1Password CLI](https://developer.1password.com/docs/cli/):机密管理 - Node.js CLI (TypeScript)
标签:MITM代理, Python安全, SOC Prime, 开发工具, 文档结构分析, 本地优先, 环境管理, 自动化攻击, 自动化配置