Update logo

Update

OrganizationPopular
nimbalyst
update

Write and maintain project wiki pages, decisions, and links.

Overview

Publishernimbalyst
Repositorynimbalyst
Skill nameupdate
Stars
1.9K
Forks
300
Bundled files
2
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.

  • 2 bundled files

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

  • Open source

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

Installation

Install the Update 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/nimbalyst/nimbalyst/tree/main/packages/extensions/knowledge/claude-plugin/skills/update
  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/nimbalyst/nimbalyst.git /tmp/nimbalyst
mkdir -p .claude/skills
cp -r /tmp/nimbalyst/packages/extensions/knowledge/claude-plugin/skills/update .claude/skills/update
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Update 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 Update 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 Update 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.

Update the wiki

First: read the guide and Home

Before writing, read the page titled "How we write this wiki" (Team section of the Wiki, or Personal when there is no team) and the section's Home page, and follow them. The guide overrides the writing advice below wherever they disagree.

Find them with listPages (section: team or personal): it returns every page with its uri, which you read with readCollabDoc. If the project has no guide page, follow ../setup/references/wiki-guide.md and tell the person the setup skill (/wiki:setup) can install it as an editable page.

Before creating a page, search for an existing one with searchPages (query, optional section); extend or link to what it finds instead of adding a second page about the same thing.

The model

  • Page. Markdown in the page tree. The Team section is shared and collaborative; the Personal section is local and works without an account. Any page can hold child pages; a page with an empty body works as a folder. A plain page's type is Page, with four fields of its own: status (draft, current, outdated), owner (an email), a one-line summary, and tags. The page shows its title above the body, so start the body with text, never with the title as a heading.
  • Typed page. A page with a type. It is a tracker item: a few single-valued fields in its header and a collaborative markdown body. It can live anywhere in the tree; one not placed anywhere else sits under its type.
  • Type. A tracker type the team defines (Module, Technology, Competitor). It is placed once in the tree, and its page shows prose about the type above a table of every page of that type. A subtype sets extends and nests inside its base (Libraries inside Technologies).
  • Relation. A named predicate with an inverse name ("built on" and "underlies"), allowed between particular types. It is written on a link in the body. The Links section at the bottom of each page lists its relations, incoming ones under the inverse name.

The project decides its types and relations. Suggest common ones (module, technology, competitor, person) when they fit; never assume a fixed list.

Do not build any of these, even if older content or habits suggest them: claim, fact, finding or investigation items; qualifiers on links; generic relations such as "related to" or "depends on"; a decision record in place of the marked sentence, or decisions as subject-verb-object triples; lists or relationship chips in a page header; automatic rollup tables of every relation; approval steps for your own edits; large decision boxes.

What to write

Pages mainly hold what people said and decided. You can look everything else up, so write it down only when it helps a person see the whole problem.

  1. Decisions are marked sentences in the page they affect. Wrap the sentence that states the decision in brackets and follow it with its attributes: who decided (name and email), the date, and what was not chosen. [We store and evaluate flags in Flagship.]{decided by="Dana Lee" email=dana@example.com on=2026-09-30 over="our own Durable Object store"} The email is how marks are found by person, so take it from a citation snapshot or the team member list (findOrgMembers); never guess one. The page shows a small chip before the sentence and a faint who/when/not-chosen line after it. Mark only the sentence itself, never a paragraph, and never put a decision in its own box or section. Mark by default. Also add a decision record (a tracker item) when no single page owns the decision, work or commits hang off it, it is not settled, or its reasons don't fit in the mark; the guide page has the details. A record never replaces the mark: keep the mark and put the record's key right after it as a link. Not every choice needs either.
  2. Open questions, the same way. [Do we need a mobile SDK for launch?]{open by="Dana Lee" email=dana@example.com}, where by is who owns it. When a page or a spike owns it, leave out the email: {open by="Spike 6"}. When it is answered, change the mark to decided with the date and what was not chosen.
  3. Cite the person. When a statement came from a person, follow it with a citation. Get it from list_citable_inputs, which lists this session's human prompts, answered questions and comments on shared pages, each with ready citation markdown (an https://console.nimbalyst.com/app/cite/... link whose title holds who, email, when and the quote). Paste it unchanged; never write or edit one by hand, and attach a person's words only when they support the sentence. If that tool is not available, name the person and the session in prose: (Dana Lee, in the session "Flag storage", 2026-10-01). Never invent a decision, a reason or a quote.
  4. Context, with sources. Facts the team weighs (limits, pricing, maturity, what a competitor ships) carry a source and the date you checked it. Cite a web page or document as an ordinary link titled cite: [TanStack Table docs](https://tanstack.com/table "cite"); the page lists its sources at the bottom. A table on a type's page or a landscape page is good context; a copy of a vendor's documentation is not. To show a type's pages inside another page, place a view (below) instead of copying rows by hand.
  5. Short. A page is a few paragraphs. The page shows its title above the body, so start the body with text, never with the title as a heading. Update the page instead of adding a second page about the same thing. When a decision changes, rewrite the sentence and say what it replaced and when.

Typed page example

Header fields are set in fields ({ "maturity": "beta", "inStack": true }). The body, exactly as the editor stores it:

markdown
Cloudflare's feature flag service. Built on [CFS-2](https://console.nimbalyst.com/org/<orgId>/project/<projectId>/page/item/CFS-2 "rel=built-on") and KV, with OpenFeature evaluation inside Workers ([Flagship docs](https://developers.cloudflare.com/ "cite"), checked 2026-10-01). Public beta since May 2026.

[We store and evaluate flags in Flagship and add profile context, exposure logging and statistics on top.]{decided by="Dana Lee" email=dana@example.com on=2026-09-30 over="our own Durable Object store"} <citation markdown from the citation tool>

[Do we need a mobile SDK for launch?]{open by="Dana Lee" email=dana@example.com}

## Limits we inherit

10,000 apps per account and 5,000 flags per app, soft limits ([limits](https://developers.cloudflare.com/ "cite"), checked 2026-10-01). Changes reach every location within 30 seconds.

Links and relations

Links in page content are https console links; the app opens them in place and teammates' browsers land on the same thing. Copy each one from the link (or a type's viewLink) that listPages returns, or from the link createSharedDoc returns. For a typed page that is not in the tree, build the link from the consoleScope (orgId, projectId) that listPages returns; never guess or reuse an id from elsewhere. Older nimbalyst:// links and .../trackers/item/... links still work, but write the forms below.

  • Team: a page is https://console.nimbalyst.com/org/<orgId>/project/<projectId>/document/<documentId>, a typed page .../page/item/<KEY>, a type .../page/type/<typeId>.
  • Personal: https://console.nimbalyst.com/app/page/<id> and .../app/item/<KEY>.
  • A link to a typed page uses its issue key as the label: [CFS-2](<link>). The label is replaced by the key when the editor saves.
  • A link that carries a relation adds rel=<predicate id> as the title: [CFS-2](https://console.nimbalyst.com/org/<orgId>/project/<projectId>/page/item/CFS-2 "rel=built-on"). An embedded card puts the view first: "view=card rel=built-on".
  • A link to a plain page uses its title as the label and never carries a relation.
  • Relations exist only between typed pages, and nothing checks rel= when you write it. Before writing one, read the project's predicate registry (.nimbalyst/predicates.yaml) and confirm the predicate has valueShape: entity, its subjectKinds include the linking page's type and its objectKinds (when present) include the linked page's type, counting base types through extends. If none fits, write a plain link. If a relation is genuinely missing, add it with the setup skill (/wiki:setup) rather than inventing an id.
  • Write the relation in a sentence that says why ("Built on Durable Objects and KV"), because the Links section shows that sentence when expanded.
  • Only link keys and pages you created or looked up.

Diagrams and files

Teammates read a Team page on their own machines, so whatever the page shows has to be a page too. A link to a file path (docs/architecture.excalidraw, /Users/...) opens nothing for them.

  • A diagram, mind map, data model, mockup or spreadsheet is its own Team page, placed under the page it explains, and linked from it with the link the tool returns. Create it empty with createSharedDoc (documentType: 'excalidraw' for a drawing), then build it with that editor's tools (excalidraw_add_elements and the rest), passing the page's uri as their filePath.
  • A file the page needs that already exists (a design drawing, a schema) is copied in with importFileToPages the same way; never link its path.
  • A Personal page can be a drawing or another editor type too, but the editors' tools reach Team pages only: build a Personal drawing in a file and copy it in with importFileToPages (section: 'personal'), or use a fenced mermaid code block in the page.

Placed views

A view is a table of one type, placed in a page on purpose. It is a link on its own line, with the type's viewLink from listPages as the target and the definition in the title: [Modules](https://console.nimbalyst.com/org/<orgId>/project/<projectId>/view/type/module "cols=title,status,owner sort=title"), with optional filter=. A view can also be a 2x2 of a type by two number fields (mode=2x2 x=<field> y=<field>). A list of open marks across pages uses the openMarksViewLink from listPages (.../view/marks?kind=open; kind=decided for decisions). Editing a cell edits the page the row points at. Place a view only where a person reading the page needs the whole set; never as an automatic rollup of every relation. If a view link does not render as a table in this version, leave it as a link and tell the person.

Personal views are https://console.nimbalyst.com/app/view/....

Tools

Your edits apply directly; there is no review step and no undo. The transcript shows one "Updated " line per edit, and the page's history is how a person reverts. Keep each edit small, never delete or rewrite what a person wrote without asking, and tell the person which pages you changed.

Every wiki tool takes section (team, the default, or personal, which works with no account). Ids come from listPages: pages by id, typed pages by issue key, types by type id, and any node by its nodeId (document:<id>, item:<id>, type:<id>).

To do thisUse
See the tree: pages, placed types, typed pages, parents, orderlistPages
Read or edit a page bodyreadCollabDoc, applyCollabDocEdit at the page's uri (the link is for page content, the uri for these tools)
Create a page under a page or a typed page, or at the topcreateSharedDoc (title, parentFolderId = parent page id or typed page issue key, or folderPath by titles, initialContent, optional before/after a sibling)
Move a page, put a typed page under a page or typed page, or reordermoveSharedItem (kind page or item, newParentFolderId, or before/after a sibling; underType: true sends a typed page back under its type)
Place a type in the tree, or move itmoveSharedItem with kind: type (a subtype stays inside its base)
Give a plain page a type in placesetPageType (pageId, typeId); it keeps its place, body and children
Rename or delete a pagerenameSharedItem, deleteSharedItem (kind: folder removes the page with its subtree; ask before deleting)
Set a plain page's status, owner, summary or tagssetPageFields (itemId, fields; only the fields you pass change, null clears one). listPages shows them on each page
Create a typed pagetracker_create (type, title, description = body markdown, header fields in fields). It appears under its type's page; then place it with moveSharedItem. A team item that comes back as a draft with no issue key needs a separate tracker_update with published: true.
Edit or rename a typed pagetracker_update (title, fields; description replaces the whole body, so read it with tracker_get first and send the full new body)
Define a type, subtype or relationthe setup skill (tracker_define_type)

A move that would put a node inside itself is refused, also through a type; read the error and pick another parent.

Migrating older wiki content

Projects that used the earlier knowledge graph have entity, claim, question, finding, investigation and decision items, label registries and perhaps project-specific types such as keystone. Follow references/migrating-v1.md. In short: turn each item into prose on the page it is about, keep every source, and never delete or archive the old items until a person approves.

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 Update AI skill do?

Write and maintain project wiki pages, decisions, and links.

Why use Update on TypingMind?

Because you install it once and use it with any model. Update 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 Update in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/nimbalyst/nimbalyst/tree/main/packages/extensions/knowledge/claude-plugin/skills/update. 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 Update?

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 Update?

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

Is the Update AI skill free?

Yes. It is published on GitHub by nimbalyst 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 👇