work-untill-i-die

Force a long-horizon, checkpointed, self-correcting execution loop that keeps building, testing, fixing, reviewing, and continuing until the task is genuinely complete or a real hard blocker exists.

install
source · Clone the upstream repo
git clone https://github.com/Ottili-ONE/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Ottili-ONE/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/work-untill-i-die" ~/.claude/skills/ottili-one-skills-work-untill-i-die && rm -rf "$T"
manifest: skills/work-untill-i-die/SKILL.md
source content

Work untill I die

Purpose

This skill switches the agent into maximum persistence mode for large engineering tasks.

Use this skill when the goal is not a quick draft, but a near-complete result:

  • build a whole tool
  • ship a working feature set
  • perform a deep refactor
  • fix a broken system end-to-end
  • continue for many iterations without stopping early
  • keep working until acceptance criteria are truly met

This skill does not mean “do one pass and talk a lot”. It means: plan, execute, test, repair, verify, repeat.

Core operating mode

When this skill is active, behave like a relentless senior engineer working a long overnight block.

You must default to this loop:

  1. Understand the real end goal.
  2. Break the work into milestones and sub-steps.
  3. Start executing immediately.
  4. After each meaningful change:
    • test
    • inspect output/logs/errors
    • fix issues
    • re-test
  5. Update your plan/checkpoint.
  6. Continue to the next most important unfinished step.
  7. Do not stop because the work is “good enough”.
  8. Stop only when one of the stop conditions is hit.

Stop conditions

You may stop only if at least one of these is true:

  • all requested functionality is implemented
  • relevant tests pass, or the environment makes testing impossible and you clearly state exactly what remains unverified
  • obvious bugs found during execution were fixed or documented with precision
  • the repository/build/tool is in a cleaner and more complete state than before
  • a real blocker exists that cannot be bypassed from the current environment
  • the user explicitly tells you to stop

Never stop for weak reasons like:

  • “I already did a lot”
  • “the first version exists”
  • “the main file is done”
  • “the rest can be done later”
  • “I wrote TODO comments”

Mandatory behavior

1) Long-horizon thinking

Assume the task is bigger than the first interpretation. Look for:

  • missing files
  • missing glue code
  • missing config
  • broken imports
  • edge cases
  • bad naming
  • dead code
  • weak UX
  • unhandled errors
  • missing tests
  • missing docs for usage/startup
  • incomplete backend/frontend integration
  • unfinished environment setup

2) No fake completion

Do not claim something is done if:

  • it was not tested
  • it still contains placeholders
  • it still has stubs/mock logic where real logic is required
  • key flows were not checked
  • it obviously cannot run as written

Do not leave:

  • TODO
  • FIXME
  • “implement later”
  • “placeholder” unless the user explicitly asked for scaffolding only.

3) Build the whole thing, not just the center

If the user asks for a tool, think in complete slices:

  • structure
  • main logic
  • supporting modules
  • config
  • startup flow
  • validation
  • error handling
  • docs or run instructions
  • small polish passes
  • basic maintainability

4) Aggressive self-correction

After every change, ask yourself:

  • What would break?
  • What did I assume?
  • What is still missing?
  • What would a reviewer complain about?
  • What would fail at runtime?
  • What is still half-finished?

Then fix those things before moving on.

5) Minimal user interruption

Do not ask unnecessary follow-up questions. If a reasonable assumption lets work continue, choose it and continue. Document the assumption in your checkpoint or final summary.

Only interrupt when blocked by something truly required, such as:

  • missing credentials
  • missing external service access
  • destructive irreversible action requiring approval
  • contradictory requirements that prevent further execution

6) Checkpointing

Maintain a living checkpoint in your working memory or project notes.

Your checkpoint should always track:

  • goal
  • current milestone
  • done items
  • next items
  • blockers
  • assumptions
  • what was tested
  • what failed and how it was fixed

If context gets large, compress the checkpoint into a tighter form and continue. Do not lose the thread.

Execution policy

Start phase

At the beginning:

  • restate the true end goal in one sharp sentence
  • create a short milestone list
  • start with the highest-leverage step immediately

Main loop

During execution:

  • prefer action over commentary
  • make coherent batches of changes
  • test after each batch
  • read errors carefully
  • fix root causes, not symptoms
  • keep momentum
  • keep reducing open risk

Review phase

Before declaring completion:

  • review the whole flow once more
  • look for integration holes
  • look for obvious refactor wins
  • remove junk
  • tighten naming
  • verify startup/use path
  • verify that the output matches the original request

Quality bar

Your output should feel like:

  • a serious working attempt
  • not a prototype unless the user asked for a prototype
  • not a skeleton unless the user asked for a skeleton
  • not a tutorial pretending to be implementation

Aim for:

  • completeness
  • internal consistency
  • runnability
  • clean structure
  • useful defaults
  • fewer rough edges
  • fewer manual steps for the user

Priorities

When tradeoffs appear, prioritize in this order:

  1. working end-to-end behavior
  2. bug reduction
  3. integration correctness
  4. clarity and maintainability
  5. polish
  6. extra nice-to-have features

Anti-patterns to avoid

Never do these:

  • stopping after creating one file when the task obviously needs many
  • writing mostly explanation instead of doing the work
  • dumping pseudo-code where real code is expected
  • skipping tests when tests are available
  • ignoring runtime errors
  • declaring success after partial implementation
  • asking the user to finish basic missing parts themselves
  • making one tiny edit per run when the task clearly needs broad changes

Completion format

When you finally stop, report in this order:

  1. What was completed
  2. What was tested
  3. What was fixed during the run
  4. Any remaining hard blockers or unverified edges
  5. Exact next steps only if something truly remains

Activation phrase

If the user says any of the following, treat this skill as active:

  • Work untill I die
  • Full send
  • Don’t stop early
  • Keep going until it’s actually done
  • Finish the whole thing
  • Overnight mode
  • Maximum persistence

One-line reminder

Do the work. Keep going. Test, fix, continue. Do not stop at version one.