Os Done Or Not logo

Os Done Or Not

CommunityPopular
kharmanskyi
os-done-or-not

ALWAYS invoke this skill when work wraps up or the user asks how it went - "done or not", "are we done", "what happened", "report", "what's the status of this ticket" - in any language, and when a Stop hook asks for a session report. Produces a ten-line plain- language report: a lead, a checkmark table, and a verdict - fully done, anything needed from you, new debt, safe to close. Every "yes" names its proof; unverified says "not checked". Saves the report so the next session starts from it instead of re-exploring the repo.

Overview

Publisherkharmanskyi
Repositoryopen-steps
Skill nameos-done-or-not
Stars
1.2K
Forks
106
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by kharmanskyi on GitHub. Read the source before you install it.

Installation

Install the Os Done Or Not AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/kharmanskyi/open-steps/tree/main/skills/os-done-or-not
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/kharmanskyi/open-steps.git /tmp/open-steps
mkdir -p .claude/skills
cp -r /tmp/open-steps/skills/os-done-or-not .claude/skills/os-done-or-not
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Os Done Or Not in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Os Done Or Not on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Os Done Or Not is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

os-done-or-not

One question, one screen: did the agent finish, and what actually happened, in words a reader who does not code will understand. Nothing happened (pure questions, no files touched) → one line saying so, no report.

Language

The user's language in this session, detected from the conversation. Translate every template label. Code, files, commands stay English.

Step 1 - gather proof that takes seconds

Fast checks only; never re-run the test suite - use results this session already produced. Not confirmable in seconds, or still running → "not checked", never "yes".

bash
git status --porcelain            # uncommitted?
git log --oneline -10             # what landed
git log HEAD --not --remotes --oneline 2>/dev/null | head -20   # unpushed? (no remote: say so)
gh pr view --json state,mergeStateStatus && gh pr checks   # if a PR exists

Step 2 - name the outcome

Sessions end one of eight ways; pick the match before writing, or the report says "fully done: yes" and "safe to close: no" in the same breath.

#OutcomeVerdict shape
1Shipped and verifieddone Yes · nothing needed · close Yes
2Done - one action is yoursdone Yes · needed = that action · close Yes
3Stalled on your decisiondone No · needed = the decision · close No
4Partly done, rest deferredcore Yes, rest recorded as debt · close Yes
5Didn't work - rolled backdone No · lead = what was learned · close Yes
6Something brokelead opens with ⚠️ · risk in full (rule 7) · close No
7Research onlythe answer is the result · skip ship rows · close Yes
8Nothing to reportone line, no report, no file

Outcomes 5 and 6 are where reports start lying; "the approach failed and was rolled back" is a complete result.

Step 3 - write the report (translate the labels, keep the shape)

<Lead: 1–2 sentences. What changed for the product. Best result first.>

| | |
|---|---|
| ✅ | <done, and what proves it> |
| ⚠️ | <surprise or bad news> |
| ⏳ | <deferred, and until when> |

**Verdict**

| | |
|---|---|
| Fully done?              | Yes / No / Not checked |
| Anything needed from you?| No / <one concrete action> |
| New debt?                | No / <how many, where recorded> / Not checked |
| Safe to close?           | Yes / No - <reason in five words> |

Checkmark rows: two to five; drop an empty row, never a non-empty ⚠️. Verdict cells are one line each - detail lives in the checkmark rows, not the verdict.

Two conditional rows, only when the session makes them real - never "not applicable": Easy to undo? (Yes - how / Hard - why) and Security touched? only when yes - one line: exposed what, closed how. Deliberately no "live for users?" row: unmerged it repeats the action line; merged but not reaching users is a surprise - a ⚠️ row.

Step 4 - save it

Write both, creating folders as needed. The paths are the same on every tool. If the file tool refuses them as outside the workspace, use the shell. Save nowhere else, and never in the user's project. <project> is the name of the folder the session started in, or of its repository's top folder when it is inside one (the name only, not the path):

  • ~/.claude/open-steps/reports/<project>/latest.md (overwritten)
  • ~/.claude/open-steps/reports/<project>/history/<YYYY-MM-DD-HHMM>.md

Head the file with date, project, ticket. Two parts; only part one goes in the chat. Part one - the report above, for the person. Part two - for the next session, which reads it instead of re-exploring the repository; the only home for engineering identifiers.

---
## Technical detail - for the next session, not the reader above

- Branch / worktree / PR and their state; commits made this session
- Files changed, with paths; test and check results as measured
- Commands worth re-running; the first thing to look at next

Terse, factual, a handover note; nothing changed → omit part two.

Step 5 - fold it into the map

The report describes one session. BIG-PICTURE.md holds the standing picture of the product, and this is the moment it goes out of date. Use the os-big-picture skill to update only the rows this session touched - a new feature, a stage that moved, a deferred item joining the backlog.

Skip it in two cases only: outcome 8, or no BIG-PICTURE.md and the user has never asked for one. A session that changed no row still runs it, because the map's measured columns went stale while the session ran.

Jargon → plain words

Examples of the move - apply it in the user's language. A ticket or PR number naming an action ("review PR #892") stays; elsewhere say what it changed.

Don't writeWrite
a1b2c3d, commit, SHA"the version" - or drop it
deploy, prod"put it on the live product", "the live product"
CI green, checks passed"all the automatic checks passed"
fail-closed, the gate fired"the safety check refused to ship it - correctly"
migration / rollback"a change to the database" / "put it back as it was"
tech debt / flaky test"an unfinished bit, written down" / "a check that sometimes lies"

Hard rules - these rules are the skill

  1. One screen: about 10 lines, 15 the ceiling.
  2. Lead with the outcome - best thing first, never the chronology.
  3. Numbers a human can use - counts, money, time; hashes, branch names and build IDs stay out unless asked.
  4. Translate every term; no plain equivalent → say what the user would see.
  5. Every "yes" names its proof; no proof → "not checked".
  6. Bad news gets its own ⚠️ row - never buried inside another line.
  7. Exception, do not compress: an unhandled security risk or data loss is spelled out plainly - in the lead and its ⚠️ row, never by inflating a verdict cell. A handled risk is one line: exposed what, closed how.

Known gotchas

  • "New debt? - No" gets written when there is no debt and when nobody looked; say "no" only after checking.
  • Neither a green check nor a merge means users have it: landed-but-unreached gets a ⚠️ row naming what would ship it - the most common way a report ends up technically true and practically wrong.
  • An approval can be revoked - a verdict is a snapshot; say so while a review is open.
  • Do not grow the table: ten rows is a wall of text in a table costume.
  • Matches none of the eight → say what happened; the list serves honesty.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Os Done Or Not AI skill do?

ALWAYS invoke this skill when work wraps up or the user asks how it went - "done or not", "are we done", "what happened", "report", "what's the status of this ticket" - in any language, and when a Stop hook asks for a session report. Produces a ten-line plain- language report: a lead, a checkmark table, and a verdict - fully done, anything needed from you, new debt, safe to close. Every "yes" names its proof; unverified says "not checked". Saves the report so the next session starts from it instead of re-exploring the repo.

Why use Os Done Or Not on TypingMind?

Because you install it once and use it with any model. Os Done Or Not is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Os Done Or Not in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/kharmanskyi/open-steps/tree/main/skills/os-done-or-not. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Os Done Or Not?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Os Done Or Not?

As many as you like. As long as a model supports skills, you can use Os Done Or Not with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Os Done Or Not AI skill free?

Yes. It is published on GitHub by kharmanskyi under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇