tykimos/agent-native-agent/ana-update
Claude Code and agent skill by tykimos/agent-native-agent
- community
Checking that the SKILL.md file is still in the repository.
Bring an existing, customized ANA up to date with the latest upstream ANA (github.com/tykimos/agent-native-agent) feature by feature — compare first, report what is new/missing/outdated, then port only what the user picks, using the per-feature skills (chat-window, context-chips, work-and-knowledge, app-shell, agent-requests, trust-checks). Never overwrite the ANA's own domain code. Use when the user says "최신 내용으로 업데이트해", "ANA 업데이트", "update this ANA", "upstream이랑 뭐가 달라", "새 기능 가져와", "base-ana…
Install
npx vskill@latest install tykimos/agent-native-agent/ana-updateSKILL.md
ana-update — compare with upstream, then port feature by feature
A per-user ANA (e.g. das-ana) started from the base but has its own domain code, file names and UI. So an update is never "copy the repo over". It is: diff by feature → the user picks → port each picked feature with its skill → verify → record.
The feature list lives in upstream `features.json`. Each feature has anchors (element ids, function names, API routes), the skill that ports it, modules to copy as-is, and npm deps.
In the app: the Update tab
The Update tab (Waiting · In progress · Done) runs this whole flow from the dashboard.
- Check for updates:
- Clones or fetches upstream into
.ana/upstream(ANA_UPSTREAM_URLto change the source). - Runs
ana-diff.mjsagainst the ANA (ANA_UPDATE_TARGETto compare another folder). - Lists one item per missing or partial feature, newer module, and the shared runtime (
/api/update/check, stored in.ana/updates.json). - Bring it in:
- Marks the item In progress.
- Sends the agent a chat instruction with the skill to follow, the missing anchors, modules, npm deps and the upstream checkout path.
- The agent ports it, verifies, updates the PRD if what the app does changed, and reports with
POST /api/update-act {id, action: done|fail, reason?}. - The shared runtime asks for confirmation first.
- Skip hides the item from every later check (until Restore). Done or failed items come back only when upstream has moved to a new commit. Items that are already in the ANA move to Done by themselves.
When you, the agent, receive an [Update] instruction, do exactly the porting steps below for that one feature and report back with the curl in the instruction.
0. Get the latest skills (once per machine, then just update)
The per-feature skills ship with the upstream repo as a Claude Code plugin. Install them so this ANA's agent can load them:
Without the plugin, read the same skills from the clone: <upstream>/skills/<name>/SKILL.md.
1. Diff (read-only)
Run from anywhere; the script needs only Node and git.
If you don't have the script yet: git clone --filter=blob:none https://github.com/tykimos/agent-native-agent /tmp/ana-up and run it from there.
Read the last line: ANA_DIFF present=… partial=… missing=… runtime=same|differs|not-found todo=<ids>.
It scans the target's own .js/.mjs/.cjs/.html (not tests, node_modules, .ana/, data/). It also finds the channel-core.js the ANA actually uses, which may be a shared ../channel-core.js on a host.
2. Report to the user before changing anything
Give a short table in the user's language, grouped by skill. For each row: what it does for them (from summary in features.json), and its state. Call out:
- ◐ partial: the ANA has an older/custom version. List the missing anchors; porting means merging, not replacing.
- module differs: a copied module (
agent-log.js,graph-index.js,codex-settings.js) exists but is older. Usually safe to replace whole, because these modules have no domain code. Check the target didn't edit it:diffit first. - runtime differs:
channel-core.jsis shared by every ANA on a host. Updating it is a separate decision. Ask explicitly, name the other ANAs that share it, and replace the whole file, never a patch. Several chat features need the newer runtime (per-session ledgers, per-person recent session). - changes since last sync: if
.ana-sync.jsonexists, the script lists upstream commits since then. Summarize them.
Then ask which features to apply. A sensible default: everything from the chat-window skill first (most visible), then context-chips, then the rest.
3. Port each picked feature with its skill
Load the skill named in the report and follow its Porting section. Common rules for all of them:
- Find the target's extension points first. These are:
- the page file (usually
dashboard.html) - the API module passed as
extraApitochannel-core'screateApp(dashboard-api.jsin the base,das-api.jsin das-ana, …) server.jsoptions
- Copy standalone modules whole (
copyinfeatures.json), then add the routes/UI that use them. - Take code from upstream by anchor. Run
grep -n '<anchor>' <upstream>/dashboard.htmlto find each block: the HTML element, its CSS rules, and its JS functions. Bring the whole block, then rename ids only if they collide with the target's. - Keep the target's domain code and look. Use its CSS tokens (
--blue,--surface, …). If a token is missing, add it to the target's:root. - Never patch `channel-core.js` per ANA. If a feature needs a newer runtime, stop and ask (step 2).
- Don't touch other ANAs' `.ana/` or their ports/tmux sessions.
4. Verify
- the target's own tests (
node test.cjsornpm test) - re-run
ana-diff.mjs: the ported features must show ✓ - open the page at phone width (390px) and desktop and exercise each feature (each skill has a checklist)
- restart only that ANA's server, the way it is normally run (launchd
kickstart -k, tmux,run.sh restart). Never `killall node`: it kills every ANA and the Codex CLIs.
5. Record
This writes <ANA>/.ana-sync.json (upstream commit, date, features present). The next update lists only upstream commits since then.
Git safety
- Commit only when the user asks, and push right away if the checkout is kept in sync with a remote. A launchd "sync" job that does
git reset --hard origin/mainwill wipe unpushed commits. Checklaunchctl list | grep syncand~/Library/LaunchAgents/*sync*first. - If something goes wrong, the reflog keeps the commit:
git reflog, thengit branch backup/<name> <sha>.
Keeping this working (for upstream maintainers)
When you add or rename a user-facing feature in the base, update features.json (anchors, skill, copy, npm) and the skill's Porting section. test.cjs fails if an anchor no longer exists in the base.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ana-update/SKILL.md
Popularity
- Repository stars
- 73
- Repository forks
- 9
- 7-day trend score
- 27
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tykimos/agent-native-agent/ana-update)