[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ES51CBCY8QXCBS33ZMMAWS":3,"skill-same:01M6ES51CBCY8QXCBS33ZMMAWS":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6ES51CBCY8QXCBS33ZMMAWS","slb",null,"Simultaneous Launch Button - Two-person rule for destructive commands in multi-agent workflows. Risk-tiered classification, command hash binding, 5 execution gates, client-side execution with environment inheritance. Go CLI.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdicklesworthstone\u002Fslb\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"commands","with","multi","rule","client","binding","gates","agent workflows","inheritance","cli","environment","command","multi-agent","classification","risk","execution","workflows","launch","go","2026-11-10 10:12:30",false,"---\nname: slb\ndescription: \"Simultaneous Launch Button - Two-person rule for destructive commands in multi-agent workflows. Risk-tiered classification, command hash binding, 5 execution gates, client-side execution with environment inheritance. Go CLI.\"\n---\n\n# SLB — Simultaneous Launch Button\n\nA Go CLI that implements a **two-person rule** for running potentially destructive commands from AI coding agents. When an agent wants to run something risky (e.g., `rm -rf`, `git push --force`, `kubectl delete`, `DROP TABLE`), SLB requires peer review and explicit approval before execution.\n\n## Why This Exists\n\nCoding agents can get tunnel vision, hallucinate, or misunderstand context. A second reviewer (ideally with a different model\u002Ftooling) catches mistakes before they become irreversible.\n\nSLB is built for **multi-agent workflows** where many agent terminals run in parallel and a single bad command could destroy work, data, or infrastructure.\n\n## Critical Design: Client-Side Execution\n\n**Commands run in YOUR shell environment**, not on a server. The daemon is a NOTARY (verifies approvals), not an executor. This means commands inherit:\n\n- AWS_PROFILE, AWS_ACCESS_KEY_ID\n- KUBECONFIG\n- Activated virtualenvs\n- SSH_AUTH_SOCK\n- Database connection strings\n\n## Risk Tiers\n\n| Tier | Approvals | Auto-approve | Examples |\n|------|-----------|--------------|----------|\n| **CRITICAL** | 2+ | Never | `rm -rf \u002F`, `DROP DATABASE`, `terraform destroy`, `git push --force` |\n| **DANGEROUS** | 1 | Never | `rm -rf .\u002Fbuild`, `git reset --hard`, `kubectl delete`, `DROP TABLE` |\n| **CAUTION** | 0 | After 30s | `rm file.txt`, `git branch -d`, `npm uninstall` |\n| **SAFE** | 0 | Immediately | `rm *.log`, `git stash`, `kubectl delete pod` |\n\n## Quick Start\n\n### Installation\n\n```bash\n# One-liner\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FDicklesworthstone\u002Fslb\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n\n# Or with go install\ngo install github.com\u002FDicklesworthstone\u002Fslb\u002Fcmd\u002Fslb@latest\n```\n\n### Initialize a Project\n\n```bash\ncd \u002Fpath\u002Fto\u002Fproject\nslb init\n```\n\nCreates `.slb\u002F` directory with:\n- `state.db` - SQLite database (source of truth)\n- `config.toml` - Project configuration\n- `pending\u002F` - JSON files for pending requests\n- `logs\u002F` - Execution logs\n\n### Basic Workflow\n\n```bash\n# 1. Start a session (as an AI agent)\nslb session start --agent \"GreenLake\" --program \"claude-code\" --model \"opus\"\n# Returns: session_id and session_key\n\n# 2. Run a dangerous command (blocks until approved)\nslb run \"rm -rf .\u002Fbuild\" --reason \"Clean build artifacts\" --session-id \u003Cid>\n\n# 3. Another agent reviews and approves\nslb pending                    # See what's waiting\nslb review \u003Crequest-id>        # View full details\nslb approve \u003Crequest-id> --session-id \u003Creviewer-id> --comment \"Looks safe\"\n\n# 4. Original command executes automatically after approval\n```\n\n## Commands Reference\n\n### Session Management\n\n```bash\nslb session start --agent \u003Cname> --program \u003Cprog> --model \u003Cmodel>\nslb session end --session-id \u003Cid>\nslb session resume --agent \u003Cname> --create-if-missing  # Resume after crash\nslb session list                               # Show active sessions\nslb session heartbeat --session-id \u003Cid>        # Keep session alive\nslb session gc --threshold 2h                  # Clean stale sessions\n```\n\n### Request & Run\n\n```bash\n# Primary command (atomic: check, request, wait, execute)\nslb run \"\u003Ccommand>\" --reason \"...\" --session-id \u003Cid>\n\n# Plumbing commands\nslb request \"\u003Ccommand>\" --reason \"...\"         # Create request only\nslb status \u003Crequest-id> --wait                 # Check\u002Fwait for status\nslb pending --all-projects                     # List pending requests\nslb cancel \u003Crequest-id>                        # Cancel own request\n```\n\n### Review & Approve\n\n```bash\nslb review \u003Crequest-id>                        # Show full details\nslb approve \u003Crequest-id> --session-id \u003Cid> --comment \"...\"\nslb reject \u003Crequest-id> --session-id \u003Cid> --reason \"...\"\n```\n\n### Execution\n\n```bash\nslb execute \u003Crequest-id>                       # Execute approved request\nslb emergency-execute \"\u003Ccmd>\" --reason \"...\"   # Human override (logged)\nslb rollback \u003Crequest-id>                      # Rollback if captured\n```\n\n### Pattern Management\n\n```bash\nslb patterns list --tier critical              # List patterns by tier\nslb patterns test \"\u003Ccommand>\"                  # Check what tier a command gets\nslb patterns add --tier dangerous \"\u003Cpattern>\"  # Add runtime pattern\n```\n\n### Daemon & TUI\n\n```bash\nslb daemon start --foreground                  # Start background daemon\nslb daemon stop                                # Stop daemon\nslb daemon status                              # Check daemon status\nslb tui                                        # Launch interactive TUI\nslb watch --session-id \u003Cid> --json             # Stream events (NDJSON)\n```\n\n### Claude Code Hook\n\n```bash\nslb hook install                               # Install PreToolUse hook\nslb hook status                                # Check installation\nslb hook test \"\u003Ccommand>\"                      # Test classification\nslb hook uninstall                             # Remove hook\n```\n\n### History & Audit\n\n```bash\nslb history --tier critical --status executed  # Filter history\nslb history -q \"rm -rf\"                        # Full-text search\nslb show \u003Crequest-id> --with-reviews           # Detailed view\nslb outcome record \u003Crequest-id> --problems     # Record feedback\nslb outcome stats                              # Execution statistics\n```\n\n## Pattern Matching Engine\n\n### Classification Algorithm\n\n1. **Normalization**: Commands are parsed with shell-aware tokenization\n   - Strips wrapper prefixes: `sudo`, `doas`, `env`, `time`, `nohup`\n   - Extracts inner commands from `bash -c 'command'`\n   - Resolves paths: `.\u002Ffoo` → `\u002Fabsolute\u002Fpath\u002Ffoo`\n\n2. **Compound Command Handling**: Commands with `;`, `&&`, `||`, `|` are split and each segment classified. **Highest risk segment wins**:\n   ```\n   echo \"done\" && rm -rf \u002Fetc    →  CRITICAL (rm -rf \u002Fetc wins)\n   ls && git status              →  SAFE (no dangerous patterns)\n   ```\n\n3. **Shell-Aware Splitting**: Separators inside quotes preserved:\n   ```\n   psql -c \"DELETE FROM users; DROP TABLE x;\"  →  Single segment (SQL)\n   echo \"foo\" && rm -rf \u002Ftmp                   →  Two segments\n   ```\n\n4. **Pattern Precedence**: SAFE → CRITICAL → DANGEROUS → CAUTION (first match wins)\n\n5. **Fail-Safe Parse Handling**: If parsing fails, tier is **upgraded by one level**:\n   - SAFE → CAUTION\n   - CAUTION → DANGEROUS\n   - DANGEROUS → CRITICAL\n\n### Default Patterns\n\n**CRITICAL (2+ approvals)**:\n`rm -rf \u002F...`, `DROP DATABASE\u002FSCHEMA`, `TRUNCATE TABLE`, `terraform destroy`, `kubectl delete node\u002Fnamespace\u002Fpv\u002Fpvc`, `git push --force`, `aws terminate-instances`, `dd ... of=\u002Fdev\u002F`\n\n**DANGEROUS (1 approval)**:\n`rm -rf`, `git reset --hard`, `git clean -fd`, `kubectl delete`, `terraform destroy -target`, `DROP TABLE`, `chmod -R`, `chown -R`\n\n**CAUTION (auto-approved after 30s)**:\n`rm \u003Cfile>`, `git stash drop`, `git branch -d`, `npm\u002Fpip uninstall`\n\n**SAFE (skip review)**:\n`rm *.log`, `rm *.tmp`, `git stash`, `kubectl delete pod`, `npm cache clean`\n\n## Request Lifecycle\n\n### State Machine\n\n```\n                    ┌─────────────┐\n                    │   PENDING   │\n                    └──────┬──────┘\n           ┌───────────────┼───────────────┐───────────────┐\n           ▼               ▼               ▼               ▼\n     ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐\n     │ APPROVED │    │ REJECTED │    │ CANCELLED│    │ TIMEOUT  │\n     └────┬─────┘    └──────────┘    └──────────┘    └────┬─────┘\n          │              (terminal)      (terminal)       │\n          ▼                                               ▼\n     ┌──────────┐                                   ┌──────────┐\n     │EXECUTING │                                   │ESCALATED │\n     └────┬─────┘                                   └──────────┘\n          │\n   ┌──────┴──────┬──────────┐\n   ▼             ▼          ▼\n┌────────┐  ┌─────────┐  ┌────────┐\n│EXECUTED│  │EXEC_FAIL│  │TIMED_OUT│\n└────────┘  └─────────┘  └────────┘\n(terminal)   (terminal)   (terminal)\n```\n\n### Approval TTL\n\n- **Standard requests**: 30 minutes (configurable)\n- **CRITICAL requests**: 10 minutes (stricter)\n\nIf approval expires before execution, re-approval required.\n\n## Execution Verification (5 Security Gates)\n\nBefore any command executes, five gates must pass:\n\n| Gate | Check |\n|------|-------|\n| **1. Status** | Request must be in APPROVED state |\n| **2. Expiry** | Approval TTL must not have elapsed |\n| **3. Hash** | SHA-256 hash of command must match (tamper detection) |\n| **4. Tier** | Risk tier must still match (patterns may have changed) |\n| **5. First-Executor** | Atomic claim prevents race conditions |\n\n## Dry Run & Rollback\n\n### Dry Run Pre-flight\n\nFor supported commands, SLB can run a dry-run variant first:\n\n| Command | Dry-run variant |\n|---------|-----------------|\n| `terraform apply` | `terraform plan` |\n| `kubectl apply` | `kubectl diff` |\n| `git push` | `git diff` (show what would change) |\n\n```toml\n[general]\nenable_dry_run = true\n```\n\n### Rollback State Capture\n\nBefore executing, SLB can capture state:\n\n```toml\n[general]\nenable_rollback_capture = true\nmax_rollback_size_mb = 100\n```\n\n**Captured state includes:**\n- **Filesystem**: Tar archive of affected paths\n- **Git**: HEAD commit, branch, dirty state, untracked files\n- **Kubernetes**: YAML manifests of affected resources\n\n```bash\nslb rollback \u003Crequest-id>           # Restore captured state\nslb rollback \u003Crequest-id> --force   # Force overwrite\n```\n\n## Configuration\n\nConfiguration is hierarchical (lowest to highest priority):\n1. Built-in defaults\n2. User config (`~\u002F.slb\u002Fconfig.toml`)\n3. Project config (`.slb\u002Fconfig.toml`)\n4. Environment variables (`SLB_*`)\n5. Command-line flags\n\n### Example Configuration\n\n```toml\n[general]\nmin_approvals = 2\nrequest_timeout = 1800              # 30 minutes\napproval_ttl_minutes = 30\ntimeout_action = \"escalate\"         # or \"auto_reject\", \"auto_approve_warn\"\nrequire_different_model = true      # Reviewer must use different AI model\n\n[rate_limits]\nmax_pending_per_session = 5\nmax_requests_per_minute = 10\n\n[notifications]\ndesktop_enabled = true\nwebhook_url = \"https:\u002F\u002Fslack.com\u002Fwebhook\u002F...\"\n\n[daemon]\ntcp_addr = \"\"                       # For Docker\u002Fremote agents\ntcp_require_auth = true\n\n[agents]\ntrusted_self_approve = [\"senior-agent\"]\ntrusted_self_approve_delay_seconds = 300\n```\n\n## Advanced Configuration\n\n### Cross-Project Reviews\n\n```toml\n[general]\ncross_project_reviews = true\nreview_pool = [\"agent-a\", \"agent-b\", \"human-reviewer\"]\n```\n\n### Conflict Resolution\n\n```toml\n[general]\nconflict_resolution = \"any_rejection_blocks\"  # Default\n# Options: any_rejection_blocks | first_wins | human_breaks_tie\n```\n\n### Dynamic Quorum\n\n```toml\n[patterns.critical]\ndynamic_quorum = true\ndynamic_quorum_floor = 2    # Minimum approvals even with few reviewers\n```\n\n## Daemon Architecture\n\n### IPC Communication\n\nUnix domain sockets (project-specific):\n```\n\u002Ftmp\u002Fslb-\u003Chash>.sock\n```\n\n### JSON-RPC Protocol\n\nAll daemon communication uses JSON-RPC 2.0:\n\n```json\n{\"jsonrpc\": \"2.0\", \"method\": \"hook_query\", \"params\": {\"command\": \"rm -rf \u002F\"}, \"id\": 1}\n```\n\n**Available methods**: `hook_query`, `hook_health`, `verify_execution`, `subscribe`\n\n### TCP Mode (Docker\u002FRemote)\n\n```toml\n[daemon]\ntcp_addr = \"0.0.0.0:9876\"\ntcp_require_auth = true\ntcp_allowed_ips = [\"192.168.1.0\u002F24\"]\n```\n\n### Timeout Handling\n\n| Action | Behavior |\n|--------|----------|\n| `escalate` | Transition to ESCALATED, notify humans (default) |\n| `auto_reject` | Automatically reject the request |\n| `auto_approve_warn` | Auto-approve CAUTION tier with warning |\n\n## Agent Event Streaming\n\n`slb watch` provides real-time NDJSON event streaming:\n\n```bash\nslb watch --session-id \u003Cid>\n```\n\n```json\n{\"type\":\"request_pending\",\"request_id\":\"abc123\",\"tier\":\"dangerous\",\"command\":\"rm -rf .\u002Fbuild\",\"ts\":\"...\"}\n{\"type\":\"request_approved\",\"request_id\":\"abc123\",\"reviewer\":\"BlueLake\",\"ts\":\"...\"}\n{\"type\":\"request_executed\",\"request_id\":\"abc123\",\"exit_code\":0,\"ts\":\"...\"}\n```\n\n**Event types**: `request_pending`, `request_approved`, `request_rejected`, `request_executed`, `request_timeout`, `request_cancelled`\n\n### Auto-Approve Mode (for reviewer agents)\n\n```bash\nslb watch --session-id \u003Cid> --auto-approve-caution\n```\n\n## Request Attachments\n\nProvide context for reviewers:\n\n```bash\n# Attach file\nslb request \"DROP TABLE users\" --reason \"...\" --attach .\u002Fschema.sql\n\n# Attach screenshot\nslb request \"kubectl delete deployment\" --reason \"...\" --attach .\u002Fdashboard.png\n\n# Attach command output\nslb request \"terraform destroy\" --reason \"...\" --attach-cmd \"terraform plan -destroy\"\n```\n\n## Emergency Override\n\nFor true emergencies, humans can bypass with extensive logging:\n\n```bash\n# Interactive (prompts for confirmation)\nslb emergency-execute \"rm -rf \u002Ftmp\u002Fbroken\" --reason \"System emergency: disk full\"\n\n# Non-interactive (requires hash acknowledgment)\nHASH=$(echo -n \"rm -rf \u002Ftmp\u002Fbroken\" | sha256sum | cut -d' ' -f1)\nslb emergency-execute \"rm -rf \u002Ftmp\u002Fbroken\" --reason \"Emergency\" --yes --ack $HASH\n```\n\n**Safeguards**: Mandatory reason, hash acknowledgment, extensive logging, optional rollback capture.\n\n## Outcome Tracking\n\nRecord execution feedback to improve pattern classification:\n\n```bash\nslb outcome record \u003Crequest-id>                          # Success\nslb outcome record \u003Crequest-id> --problems --description \"Deleted wrong files\"\nslb outcome stats                                        # Statistics\n```\n\n## TUI Dashboard\n\n```bash\nslb tui\n```\n\n```\n┌─────────────────────────────────────────────────────────────────────┐\n│  SLB Dashboard                                                       │\n├─────────────────┬───────────────────────────────────────────────────┤\n│  AGENTS         │  PENDING REQUESTS                                  │\n│  ───────        │  ────────────────                                  │\n│▸ GreenLake      │▸ abc123 CRITICAL rm -rf \u002Fetc      BlueLake 2m     │\n│  BlueLake       │  def456 DANGEROUS git reset --hard GreenLake 5m   │\n├─────────────────┴───────────────────────────────────────────────────┤\n│  ACTIVITY                                                            │\n│  10:30:15 GreenLake approved abc123                                  │\n│  10:28:42 BlueLake requested def456 (DANGEROUS)                      │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**Keys**: `Tab` (cycle panels), `↑\u002F↓` (navigate), `Enter` (view), `a` (approve), `r` (reject), `q` (quit)\n\n## Claude Code Hook Integration\n\n```bash\n# Install hook\nslb hook install\n\n# Hook actions returned to Claude Code:\n# - allow: Command proceeds\n# - ask: User prompted (CAUTION tier)\n# - block: Blocked with message to use `slb request`\n```\n\nGenerate IDE integrations:\n\n```bash\nslb integrations claude-hooks > ~\u002F.claude\u002Fhooks.json\nslb integrations cursor-rules > .cursorrules\n```\n\n## Security Design Principles\n\n### Defense in Depth (6 layers)\n\n1. Pattern-based classification\n2. Peer review requirement\n3. Command hash binding (SHA-256)\n4. Approval TTL\n5. Execution verification gates\n6. Audit logging\n\n### Cryptographic Guarantees\n\n- **Command binding**: SHA-256 hash verified at execution\n- **Review signatures**: HMAC using session keys\n- **Session keys**: Generated per-session, never stored in plaintext\n\n### Fail-Closed Behavior\n\n- Daemon unreachable → Block dangerous commands (hook)\n- Parse error → Upgrade tier by one level\n- Approval expired → Require new approval\n- Hash mismatch → Reject execution\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| `0` | Success |\n| `1` | General error |\n| `2` | Invalid arguments |\n| `3` | Request not found |\n| `4` | Permission denied |\n| `5` | Timeout |\n| `6` | Rate limited |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `SLB_MIN_APPROVALS` | Minimum approval count |\n| `SLB_REQUEST_TIMEOUT` | Request timeout in seconds |\n| `SLB_TIMEOUT_ACTION` | What to do on timeout |\n| `SLB_DESKTOP_NOTIFICATIONS` | Enable desktop notifications |\n| `SLB_WEBHOOK_URL` | Webhook notification URL |\n| `SLB_DAEMON_TCP_ADDR` | TCP listen address |\n| `SLB_TRUSTED_SELF_APPROVE` | Comma-separated trusted agents |\n\n## Troubleshooting\n\n### \"Daemon not running\" warning\n\nSLB works without daemon (file-based polling). Start for real-time:\n\n```bash\nslb daemon start\n```\n\n### \"Active session already exists\"\n\n```bash\nslb session resume --agent \"YourAgent\" --create-if-missing\n```\n\n### Approval expired\n\nRe-request:\n```bash\nslb run \"\u003Ccommand>\" --reason \"...\"\n```\n\n### Command hash mismatch\n\nCommand was modified after approval. Re-request for the modified command.\n\n## Safety Note\n\nSLB adds friction and peer review for dangerous actions. It does NOT replace:\n- Least-privilege credentials\n- Environment safeguards\n- Proper access controls\n- Backup strategies\n\nUse SLB as **defense in depth**, not your only protection.\n\n## Integration with Flywheel\n\n| Tool | Integration |\n|------|-------------|\n| **Agent Mail** | Notify reviewers via inbox; track audit trails |\n| **BV** | Track SLB requests as beads |\n| **CASS** | Search past SLB decisions across sessions |\n| **DCG** | DCG blocks automatically; SLB adds peer review layer |\n| **NTM** | Coordinate review across agent terminals |\n","# SLB — Simultaneous Launch Button\n\nA Go CLI that implements a **two-person rule** for running potentially destructive commands from AI coding agents. When an agent wants to run something risky (e.g., `rm -rf`, `git push --force`, `kubectl delete`, `DROP TABLE`), SLB requires peer review and explicit approval before execution.\n\n## Why This Exists\n\nCoding agents can get tunnel vision, hallucinate, or misunderstand context. A second reviewer (ideally with a different model\u002Ftooling) catches mistakes before they become irreversible.\n\nSLB is built for **multi-agent workflows** where many agent terminals run in parallel and a single bad command could destroy work, data, or infrastructure.\n\n## Critical Design: Client-Side Execution\n\n**Commands run in YOUR shell environment**, not on a server. The daemon is a NOTARY (verifies approvals), not an executor. This means commands inherit:\n\n- AWS_PROFILE, AWS_ACCESS_KEY_ID\n- KUBECONFIG\n- Activated virtualenvs\n- SSH_AUTH_SOCK\n- Database connection strings\n\n## Risk Tiers\n\n| Tier | Approvals | Auto-approve | Examples |\n|------|-----------|--------------|----------|\n| **CRITICAL** | 2+ | Never | `rm -rf \u002F`, `DROP DATABASE`, `terraform destroy`, `git push --force` |\n| **DANGEROUS** | 1 | Never | `rm -rf .\u002Fbuild`, `git reset --hard`, `kubectl delete`, `DROP TABLE` |\n| **CAUTION** | 0 | After 30s | `rm file.txt`, `git branch -d`, `npm uninstall` |\n| **SAFE** | 0 | Immediately | `rm *.log`, `git stash`, `kubectl delete pod` |\n\n## Quick Start\n\n### Installation\n\n```bash\n# One-liner\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FDicklesworthstone\u002Fslb\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n\n# Or with go install\ngo install github.com\u002FDicklesworthstone\u002Fslb\u002Fcmd\u002Fslb@latest\n```\n\n### Initialize a Project\n\n```bash\ncd \u002Fpath\u002Fto\u002Fproject\nslb init\n```\n\nCreates `.slb\u002F` directory with:\n- `state.db` - SQLite database (source of truth)\n- `config.toml` - Project configuration\n- `pending\u002F` - JSON files for pending requests\n- `logs\u002F` - Execution logs\n\n### Basic Workflow\n\n```bash\n# 1. Start a session (as an AI agent)\nslb session start --agent \"GreenLake\" --program \"claude-code\" --model \"opus\"\n# Returns: session_id and session_key\n\n# 2. Run a dangerous command (blocks until approved)\nslb run \"rm -rf .\u002Fbuild\" --reason \"Clean build artifacts\" --session-id \u003Cid>\n\n# 3. Another agent reviews and approves\nslb pending                    # See what's waiting\nslb review \u003Crequest-id>        # View full details\nslb approve \u003Crequest-id> --session-id \u003Creviewer-id> --comment \"Looks safe\"\n\n# 4. Original command executes automatically after approval\n```\n\n## Commands Reference\n\n### Session Management\n\n```bash\nslb session start --agent \u003Cname> --program \u003Cprog> --model \u003Cmodel>\nslb session end --session-id \u003Cid>\nslb session resume --agent \u003Cname> --create-if-missing  # Resume after crash\nslb session list                               # Show active sessions\nslb session heartbeat --session-id \u003Cid>        # Keep session alive\nslb session gc --threshold 2h                  # Clean stale sessions\n```\n\n### Request & Run\n\n```bash\n# Primary command (atomic: check, request, wait, execute)\nslb run \"\u003Ccommand>\" --reason \"...\" --session-id \u003Cid>\n\n# Plumbing commands\nslb request \"\u003Ccommand>\" --reason \"...\"         # Create request only\nslb status \u003Crequest-id> --wait                 # Check\u002Fwait for status\nslb pending --all-projects                     # List pending requests\nslb cancel \u003Crequest-id>                        # Cancel own request\n```\n\n### Review & Approve\n\n```bash\nslb review \u003Crequest-id>                        # Show full details\nslb approve \u003Crequest-id> --session-id \u003Cid> --comment \"...\"\nslb reject \u003Crequest-id> --session-id \u003Cid> --reason \"...\"\n```\n\n### Execution\n\n```bash\nslb execute \u003Crequest-id>                       # Execute approved request\nslb emergency-execute \"\u003Ccmd>\" --reason \"...\"   # Human override (logged)\nslb rollback \u003Crequest-id>                      # Rollback if captured\n```\n\n### Pattern Management\n\n```bash\nslb patterns list --tier critical              # List patterns by tier\nslb patterns test \"\u003Ccommand>\"                  # Check what tier a command gets\nslb patterns add --tier dangerous \"\u003Cpattern>\"  # Add runtime pattern\n```\n\n### Daemon & TUI\n\n```bash\nslb daemon start --foreground                  # Start background daemon\nslb daemon stop                                # Stop daemon\nslb daemon status                              # Check daemon status\nslb tui                                        # Launch interactive TUI\nslb watch --session-id \u003Cid> --json             # Stream events (NDJSON)\n```\n\n### Claude Code Hook\n\n```bash\nslb hook install                               # Install PreToolUse hook\nslb hook status                                # Check installation\nslb hook test \"\u003Ccommand>\"                      # Test classification\nslb hook uninstall                             # Remove hook\n```\n\n### History & Audit\n\n```bash\nslb history --tier critical --status executed  # Filter history\nslb history -q \"rm -rf\"                        # Full-text search\nslb show \u003Crequest-id> --with-reviews           # Detailed view\nslb outcome record \u003Crequest-id> --problems     # Record feedback\nslb outcome stats                              # Execution statistics\n```\n\n## Pattern Matching Engine\n\n### Classification Algorithm\n\n1. **Normalization**: Commands are parsed with shell-aware tokenization\n   - Strips wrapper prefixes: `sudo`, `doas`, `env`, `time`, `nohup`\n   - Extracts inner commands from `bash -c 'command'`\n   - Resolves paths: `.\u002Ffoo` → `\u002Fabsolute\u002Fpath\u002Ffoo`\n\n2. **Compound Command Handling**: Commands with `;`, `&&`, `||`, `|` are split and each segment classified. **Highest risk segment wins**:\n   ```\n   echo \"done\" && rm -rf \u002Fetc    →  CRITICAL (rm -rf \u002Fetc wins)\n   ls && git status              →  SAFE (no dangerous patterns)\n   ```\n\n3. **Shell-Aware Splitting**: Separators inside quotes preserved:\n   ```\n   psql -c \"DELETE FROM users; DROP TABLE x;\"  →  Single segment (SQL)\n   echo \"foo\" && rm -rf \u002Ftmp                   →  Two segments\n   ```\n\n4. **Pattern Precedence**: SAFE → CRITICAL → DANGEROUS → CAUTION (first match wins)\n\n5. **Fail-Safe Parse Handling**: If parsing fails, tier is **upgraded by one level**:\n   - SAFE → CAUTION\n   - CAUTION → DANGEROUS\n   - DANGEROUS → CRITICAL\n\n### Default Patterns\n\n**CRITICAL (2+ approvals)**:\n`rm -rf \u002F...`, `DROP DATABASE\u002FSCHEMA`, `TRUNCATE TABLE`, `terraform destroy`, `kubectl delete node\u002Fnamespace\u002Fpv\u002Fpvc`, `git push --force`, `aws terminate-instances`, `dd ... of=\u002Fdev\u002F`\n\n**DANGEROUS (1 approval)**:\n`rm -rf`, `git reset --hard`, `git clean -fd`, `kubectl delete`, `terraform destroy -target`, `DROP TABLE`, `chmod -R`, `chown -R`\n\n**CAUTION (auto-approved after 30s)**:\n`rm \u003Cfile>`, `git stash drop`, `git branch -d`, `npm\u002Fpip uninstall`\n\n**SAFE (skip review)**:\n`rm *.log`, `rm *.tmp`, `git stash`, `kubectl delete pod`, `npm cache clean`\n\n## Request Lifecycle\n\n### State Machine\n\n```\n                    ┌─────────────┐\n                    │   PENDING   │\n                    └──────┬──────┘\n           ┌───────────────┼───────────────┐───────────────┐\n           ▼               ▼               ▼               ▼\n     ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐\n     │ APPROVED │    │ REJECTED │    │ CANCELLED│    │ TIMEOUT  │\n     └────┬─────┘    └──────────┘    └──────────┘    └────┬─────┘\n          │              (terminal)      (terminal)       │\n          ▼                                               ▼\n     ┌──────────┐                                   ┌──────────┐\n     │EXECUTING │                                   │ESCALATED │\n     └────┬─────┘                                   └──────────┘\n          │\n   ┌──────┴──────┬──────────┐\n   ▼             ▼          ▼\n┌────────┐  ┌─────────┐  ┌────────┐\n│EXECUTED│  │EXEC_FAIL│  │TIMED_OUT│\n└────────┘  └─────────┘  └────────┘\n(terminal)   (terminal)   (terminal)\n```\n\n### Approval TTL\n\n- **Standard requests**: 30 minutes (configurable)\n- **CRITICAL requests**: 10 minutes (stricter)\n\nIf approval expires before execution, re-approval required.\n\n## Execution Verification (5 Security Gates)\n\nBefore any command executes, five gates must pass:\n\n| Gate | Check |\n|------|-------|\n| **1. Status** | Request must be in APPROVED state |\n| **2. Expiry** | Approval TTL must not have elapsed |\n| **3. Hash** | SHA-256 hash of command must match (tamper detection) |\n| **4. Tier** | Risk tier must still match (patterns may have changed) |\n| **5. First-Executor** | Atomic claim prevents race conditions |\n\n## Dry Run & Rollback\n\n### Dry Run Pre-flight\n\nFor supported commands, SLB can run a dry-run variant first:\n\n| Command | Dry-run variant |\n|---------|-----------------|\n| `terraform apply` | `terraform plan` |\n| `kubectl apply` | `kubectl diff` |\n| `git push` | `git diff` (show what would change) |\n\n```toml\n[general]\nenable_dry_run = true\n```\n\n### Rollback State Capture\n\nBefore executing, SLB can capture state:\n\n```toml\n[general]\nenable_rollback_capture = true\nmax_rollback_size_mb = 100\n```\n\n**Captured state includes:**\n- **Filesystem**: Tar archive of affected paths\n- **Git**: HEAD commit, branch, dirty state, untracked files\n- **Kubernetes**: YAML manifests of affected resources\n\n```bash\nslb rollback \u003Crequest-id>           # Restore captured state\nslb rollback \u003Crequest-id> --force   # Force overwrite\n```\n\n## Configuration\n\nConfiguration is hierarchical (lowest to highest priority):\n1. Built-in defaults\n2. User config (`~\u002F.slb\u002Fconfig.toml`)\n3. Project config (`.slb\u002Fconfig.toml`)\n4. Environment variables (`SLB_*`)\n5. Command-line flags\n\n### Example Configuration\n\n```toml\n[general]\nmin_approvals = 2\nrequest_timeout = 1800              # 30 minutes\napproval_ttl_minutes = 30\ntimeout_action = \"escalate\"         # or \"auto_reject\", \"auto_approve_warn\"\nrequire_different_model = true      # Reviewer must use different AI model\n\n[rate_limits]\nmax_pending_per_session = 5\nmax_requests_per_minute = 10\n\n[notifications]\ndesktop_enabled = true\nwebhook_url = \"https:\u002F\u002Fslack.com\u002Fwebhook\u002F...\"\n\n[daemon]\ntcp_addr = \"\"                       # For Docker\u002Fremote agents\ntcp_require_auth = true\n\n[agents]\ntrusted_self_approve = [\"senior-agent\"]\ntrusted_self_approve_delay_seconds = 300\n```\n\n## Advanced Configuration\n\n### Cross-Project Reviews\n\n```toml\n[general]\ncross_project_reviews = true\nreview_pool = [\"agent-a\", \"agent-b\", \"human-reviewer\"]\n```\n\n### Conflict Resolution\n\n```toml\n[general]\nconflict_resolution = \"any_rejection_blocks\"  # Default\n# Options: any_rejection_blocks | first_wins | human_breaks_tie\n```\n\n### Dynamic Quorum\n\n```toml\n[patterns.critical]\ndynamic_quorum = true\ndynamic_quorum_floor = 2    # Minimum approvals even with few reviewers\n```\n\n## Daemon Architecture\n\n### IPC Communication\n\nUnix domain sockets (project-specific):\n```\n\u002Ftmp\u002Fslb-\u003Chash>.sock\n```\n\n### JSON-RPC Protocol\n\nAll daemon communication uses JSON-RPC 2.0:\n\n```json\n{\"jsonrpc\": \"2.0\", \"method\": \"hook_query\", \"params\": {\"command\": \"rm -rf \u002F\"}, \"id\": 1}\n```\n\n**Available methods**: `hook_query`, `hook_health`, `verify_execution`, `subscribe`\n\n### TCP Mode (Docker\u002FRemote)\n\n```toml\n[daemon]\ntcp_addr = \"0.0.0.0:9876\"\ntcp_require_auth = true\ntcp_allowed_ips = [\"192.168.1.0\u002F24\"]\n```\n\n### Timeout Handling\n\n| Action | Behavior |\n|--------|----------|\n| `escalate` | Transition to ESCALATED, notify humans (default) |\n| `auto_reject` | Automatically reject the request |\n| `auto_approve_warn` | Auto-approve CAUTION tier with warning |\n\n## Agent Event Streaming\n\n`slb watch` provides real-time NDJSON event streaming:\n\n```bash\nslb watch --session-id \u003Cid>\n```\n\n```json\n{\"type\":\"request_pending\",\"request_id\":\"abc123\",\"tier\":\"dangerous\",\"command\":\"rm -rf .\u002Fbuild\",\"ts\":\"...\"}\n{\"type\":\"request_approved\",\"request_id\":\"abc123\",\"reviewer\":\"BlueLake\",\"ts\":\"...\"}\n{\"type\":\"request_executed\",\"request_id\":\"abc123\",\"exit_code\":0,\"ts\":\"...\"}\n```\n\n**Event types**: `request_pending`, `request_approved`, `request_rejected`, `request_executed`, `request_timeout`, `request_cancelled`\n\n### Auto-Approve Mode (for reviewer agents)\n\n```bash\nslb watch --session-id \u003Cid> --auto-approve-caution\n```\n\n## Request Attachments\n\nProvide context for reviewers:\n\n```bash\n# Attach file\nslb request \"DROP TABLE users\" --reason \"...\" --attach .\u002Fschema.sql\n\n# Attach screenshot\nslb request \"kubectl delete deployment\" --reason \"...\" --attach .\u002Fdashboard.png\n\n# Attach command output\nslb request \"terraform destroy\" --reason \"...\" --attach-cmd \"terraform plan -destroy\"\n```\n\n## Emergency Override\n\nFor true emergencies, humans can bypass with extensive logging:\n\n```bash\n# Interactive (prompts for confirmation)\nslb emergency-execute \"rm -rf \u002Ftmp\u002Fbroken\" --reason \"System emergency: disk full\"\n\n# Non-interactive (requires hash acknowledgment)\nHASH=$(echo -n \"rm -rf \u002Ftmp\u002Fbroken\" | sha256sum | cut -d' ' -f1)\nslb emergency-execute \"rm -rf \u002Ftmp\u002Fbroken\" --reason \"Emergency\" --yes --ack $HASH\n```\n\n**Safeguards**: Mandatory reason, hash acknowledgment, extensive logging, optional rollback capture.\n\n## Outcome Tracking\n\nRecord execution feedback to improve pattern classification:\n\n```bash\nslb outcome record \u003Crequest-id>                          # Success\nslb outcome record \u003Crequest-id> --problems --description \"Deleted wrong files\"\nslb outcome stats                                        # Statistics\n```\n\n## TUI Dashboard\n\n```bash\nslb tui\n```\n\n```\n┌─────────────────────────────────────────────────────────────────────┐\n│  SLB Dashboard                                                       │\n├─────────────────┬───────────────────────────────────────────────────┤\n│  AGENTS         │  PENDING REQUESTS                                  │\n│  ───────        │  ────────────────                                  │\n│▸ GreenLake      │▸ abc123 CRITICAL rm -rf \u002Fetc      BlueLake 2m     │\n│  BlueLake       │  def456 DANGEROUS git reset --hard GreenLake 5m   │\n├─────────────────┴───────────────────────────────────────────────────┤\n│  ACTIVITY                                                            │\n│  10:30:15 GreenLake approved abc123                                  │\n│  10:28:42 BlueLake requested def456 (DANGEROUS)                      │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**Keys**: `Tab` (cycle panels), `↑\u002F↓` (navigate), `Enter` (view), `a` (approve), `r` (reject), `q` (quit)\n\n## Claude Code Hook Integration\n\n```bash\n# Install hook\nslb hook install\n\n# Hook actions returned to Claude Code:\n# - allow: Command proceeds\n# - ask: User prompted (CAUTION tier)\n# - block: Blocked with message to use `slb request`\n```\n\nGenerate IDE integrations:\n\n```bash\nslb integrations claude-hooks > ~\u002F.claude\u002Fhooks.json\nslb integrations cursor-rules > .cursorrules\n```\n\n## Security Design Principles\n\n### Defense in Depth (6 layers)\n\n1. Pattern-based classification\n2. Peer review requirement\n3. Command hash binding (SHA-256)\n4. Approval TTL\n5. Execution verification gates\n6. Audit logging\n\n### Cryptographic Guarantees\n\n- **Command binding**: SHA-256 hash verified at execution\n- **Review signatures**: HMAC using session keys\n- **Session keys**: Generated per-session, never stored in plaintext\n\n### Fail-Closed Behavior\n\n- Daemon unreachable → Block dangerous commands (hook)\n- Parse error → Upgrade tier by one level\n- Approval expired → Require new approval\n- Hash mismatch → Reject execution\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| `0` | Success |\n| `1` | General error |\n| `2` | Invalid arguments |\n| `3` | Request not found |\n| `4` | Permission denied |\n| `5` | Timeout |\n| `6` | Rate limited |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `SLB_MIN_APPROVALS` | Minimum approval count |\n| `SLB_REQUEST_TIMEOUT` | Request timeout in seconds |\n| `SLB_TIMEOUT_ACTION` | What to do on timeout |\n| `SLB_DESKTOP_NOTIFICATIONS` | Enable desktop notifications |\n| `SLB_WEBHOOK_URL` | Webhook notification URL |\n| `SLB_DAEMON_TCP_ADDR` | TCP listen address |\n| `SLB_TRUSTED_SELF_APPROVE` | Comma-separated trusted agents |\n\n## Troubleshooting\n\n### \"Daemon not running\" warning\n\nSLB works without daemon (file-based polling). Start for real-time:\n\n```bash\nslb daemon start\n```\n\n### \"Active session already exists\"\n\n```bash\nslb session resume --agent \"YourAgent\" --create-if-missing\n```\n\n### Approval expired\n\nRe-request:\n```bash\nslb run \"\u003Ccommand>\" --reason \"...\"\n```\n\n### Command hash mismatch\n\nCommand was modified after approval. Re-request for the modified command.\n\n## Safety Note\n\nSLB adds friction and peer review for dangerous actions. It does NOT replace:\n- Least-privilege credentials\n- Environment safeguards\n- Proper access controls\n- Backup strategies\n\nUse SLB as **defense in depth**, not your only protection.\n\n## Integration with Flywheel\n\n| Tool | Integration |\n|------|-------------|\n| **Agent Mail** | Notify reviewers via inbox; track audit trails |\n| **BV** | Track SLB requests as beads |\n| **CASS** | Search past SLB decisions across sessions |\n| **DCG** | DCG blocks automatically; SLB adds peer review layer |\n| **NTM** | Coordinate review across agent terminals |\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fdicklesworthstone\u002Fslb",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill slb",{"tool":63,"command":64},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill slb",{"tool":66,"command":67},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill slb","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdicklesworthstone\u002Fslb\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"skill-report.json","REFERENCE","参考文档",30567,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdicklesworthstone\u002Fslb\u002Fskill-report.json",[78,88,98,107,113,120],{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":84,"publishedAt":43},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[83],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[85,86,87],"model","model hierarchy","model hierarchy skill",{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":43},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[93],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[95,96,97],"MCP","zoom","zoom mcp",{"skillNo":99,"name":100,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":43},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[104,105,106,96],"sdk","zoom apps sdk","apps",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":43},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[109],{"skillNo":114,"name":115,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":43},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[118],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[115],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":43},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[122]]