用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/pnils08/GodWorld --skill deploy命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Close a GodWorld external-lane session (Grok) cleanly: inventory work, land authorized commits if needed, rewrite only NEXT[grok] in SESSION_CONTEXT.md, commit that handoff path-specifically, report git stack / push status. Use when the user says session end, close session, handoff, wrap up, done for now, or runs /session-end. Not the Claude Code session-end skill (no PIN bump, no ROLLOUT sweep, no sessionEndMechanical.js).
Deputy Mayor Brenda Okoro's office. Generates operational statements on West Oakland Stabilization Fund, Community Development, and Economic Development (Osei-portfolio coverage). Carries Mayor's-office operational reality — not political framing.
Oakland Police Chief Rafael Montez. Generates public safety statements, OARI implementation responses, and crime data communications. Professional, measured, data-driven.
正在显示 SKILL.md
基于 SOC 职业分类
| name | deploy |
| description | Deploy engine to Google Apps Script via clasp push with pre-flight checks, verification, and rollback guidance. |
| version | 2.0 |
| updated | "2026-07-02T00:00:00.000Z" |
| tags | ["engine","active"] |
| disable-model-invocation | true |
| effort | medium |
Skill bag: senior software engineer deploying to production. The checklist below is what that skill executes; the bag adds caution defaults — verify before declaring success, name what's dirty if pushing from a dirty tree, treat clasp as production push because it is.
Authority (S282, Mike-direct): deploys are the engine-sheet terminal's function across all terminals. No per-push ask; S250 attribution discipline binds (one unverified change in flight at a time). Other agents propose, don't deploy.
CLAUDE_CTL=1 npx clasp push
The deploy gate (S282): push / deploy / redeploy / undeploy / delete are blocked unless CLAUDE_CTL=1 is set — same opt-in pattern as the .githooks/pre-commit control-plane gate (S274). Gate source: .githooks/clasp-gate.sh, installed over node_modules/.bin/clasp by .githooks/install-clasp-gate.sh; package.json postinstall re-arms it after every npm install. The real binary sits at node_modules/.bin/clasp-real (used internally by the gate; also the ungated path for pull in scratch dirs). It is a speed bump for agents, not a security barrier.
Push surface (verified S282): ~164 engine .js files (phase*/ + utilities/, minus **/*.test.js) + appsscript.json ≈ 166 remote files. lib/ and scripts/ are claspignored — loop-side Node work never deploys. A legacy graphify-out/graph.html may linger remotely until the next contentful push purges it (claspignored S282).
clasp pull has no --rootDir. To pull live code without touching the repo: make a scratch dir, cp .clasp.json into it, run node_modules/.bin/clasp-real pull from there.clasp push skips silently when content-identical ("Script is already up to date"). A .claspignore change alone does not push — removals purge only on the next contentful push. -f forces the manifest only.clasp status (= show-file-status) lists tracked files — it is not the push set and not a delta. The push output's └─ list is the authoritative pushed set.Empirical deploy delta — know exactly what this push changes. Full-replace means live-vs-HEAD is the only honest diff:
mkdir -p <scratch>/clasp-live && cp .clasp.json <scratch>/clasp-live/
(cd <scratch>/clasp-live && /root/GodWorld/node_modules/.bin/clasp-real pull)
# diff every pulled *.js against the repo copy; list CHANGED / LIVE-ONLY / NEW
The changed-file list is the payload. Confirm it matches what you believe is queued (git log on those files). One logical change-set per push (S250 attribution).
Uncommitted changes — git status --porcelain. Clasp reads the working tree, not HEAD: anything dirty in phase*//utilities/ WILL deploy. Dirty claspignored paths (docs/, .claude/, lib/, scripts/) are fine — name them anyway.
Math.random() scan —
grep -rn "Math\.random()" phase*/ utilities/ --include="*.js" | grep -v "^\s*//"
Remaining hits must be confirmed comment-only by eye (changelog comments mentioning past fixes are normal). Any live call site: STOP.
Branch — git branch --show-current should be main.
File count sanity — find phase*/ utilities/ -name "*.js" ! -name "*.test.js" | wc -l ≈ 164. A big swing means something structural moved; investigate before pushing.
CLAUDE_CTL=1 npx clasp push
Clasp prints every pushed file. Count the └─ lines (~166).
Never report success from push output alone:
diff each payload file against the repo copy. live == HEAD on every payload file, byte-identical, or the deploy did not land.find <scratch>/clasp-live -name "*.test.js" must be 0 (a pushed test harness crashes the engine at load: require is not defined — the C98 incident).NEXT[engine-sheet] with what deployed + "smoke-test pending at C{N} run" (or "smoke-tested at run-{N}"). This is the terminal's hard rule; there is no automatic deploy log — the .claude/hooks/pre-tool-check.sh / post-deploy-check.sh files exist on disk but are NOT registered in settings (verified S282), so deploy-log.txt does not auto-stamp. The SESSION_CONTEXT note and the commit message ARE the record.CLAUDE_CTL=1 git commit ....CLAUDE_CTL=1 — that is the gate working, not an error..claspignore.npx clasp login (interactive: have Mike run ! npx clasp login).git checkout the prior commit of the payload files, CLAUDE_CTL=1 npx clasp push, then restore the working tree. Live always mirrors some committed state — never hand-edit in the Apps Script editor.