ci-local-export
Skill11 starsChanged 49 days agoMITView on GitHub
Daily CI Steward job: export this clone's git hook timings (how long git commit and git push took, and which pushes were killed at the tool ceiling) to the ci-steward-data branch, then trim the local timings file. A DorkOS scheduled skill that runs pnpm ci:local-export.
- Commits and pushes
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- auditing-uiSkill
- browser-testingSkill
- capturing-product-mediaSkill
- ci-pulseSkill
- ci-quarantineSkill
- ci-statusSkill
- creating-pull-requestsSkill
- debugging-systematicallySkill
- debugging-test-failuresSkill
- debugging-typescript-errorsSkill
- deps-weeklySkill
- designing-frontendSkill
- opensrcSkill
- organizing-fsd-architectureSkill
- runtime-watchSkill
- stewarding-ci-pipelineSkill
- syncing-agent-skillsSkill
- verification-before-completionSkill
- vision-drift-checkSkill
- visual-companionSkill
- writing-adrsSkill
- writing-app-copySkill
- writing-blog-postsSkill
- writing-changelogsSkill
- writing-developer-guidesSkill
- writing-for-humansSkill
- writing-to-usersSkill
- adding-config-fieldsSkill
- clarifying-requirementsSkill
- maintaining-dependenciesSkill
- maintaining-dev-playgroundSkill
- managing-specsSkill
- marketplace-devSkill
- orchestrating-parallel-workSkill
- reading-session-transcriptsSkill
- receiving-code-reviewSkill
- requesting-code-reviewSkill
- styling-with-tailwind-shadcnSkill
- test-driven-developmentSkill
- upgrading-runtime-dependenciesSkill
- working-in-worktreesSkill
- dorkbot-triageSkill
The file
Files
ci-local-export
The lefthook time-wrap (packages/ci-steward/bin/time-wrap.sh) records a START and an END line for every hook command in $(git rev-parse --git-common-dir)/ci-steward/local-timings.jsonl. That file lives only on this machine, so a GitHub Actions job cannot read it. This job pushes one aggregate per finished day to local/<clone>/YYYY-MM-DD.json on the ci-steward-data branch, where the daily collector turns it into the local-commit and local-push SLOs. It runs at 04:30 UTC, half an hour before the collector.
Run
pnpm ci:local-exportThen report its output in one or two lines: how many days it exported, whether it pushed, and whether it rotated the file. It never needs anything else.
What it does
- Reads the timings file and pairs each START with its END. An END with a signal status (128 + HUP, INT or TERM) is a killed run, and so is a START with no END older than
local.killed_after_secondsinci/config.yaml(the pre-push watchdog's ceiling plus margin); a younger unmatched START might still be running and is left for tomorrow. - Writes each finished day under
local/<clone>/. The clone name is a short digest of this machine and this clone, never the hostname (the branch is public); setCI_STEWARD_CLONEor pass--clone <name>to choose one. - Pushes with fetch, rebase and retry. It never creates the branch: before the collector's first run it says so and pushes nothing.
- Writes a heartbeat,
local/<clone>/exported.json, on every run, so an idle clone (no commits, no pushes) never reads as a stale export. - Rotates the file: lines older than 30 days go, and past 5 MB the oldest half goes. Lines appended while it rewrites are kept.
Approving it
DorkOS finds the schedule: block above and puts this job on the Schedules page as Waiting for approval. It does not run until the operator approves it. Approve it with Approve at Full autonomy: the job runs Bash and git push, and a schedule that arrives in a file is held back to the careful setting, which cannot run either unattended (DOR-2100; docs/guides/task-scheduler.mdx). With plain Approve, every run ends Blocked.
If exports stop, the collector notices: when no clone has exported in 3 days, that is a health failure on the daily snapshot, and the SessionStart line says so. The clone name follows the machine's hostname, which macOS changes per network (x.local, x.lan), so one checkout can leave old names behind: a clone over 3 days old is only a warning while another clone exports fresh, and after 14 days it is retired and only reported.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

