@litfamily/litmuse 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +95 -26
- package/README_ko-KR.md +92 -23
- package/docs/assets/card/after.webp +0 -0
- package/docs/assets/card/idle.webp +0 -0
- package/docs/assets/card/working.webp +0 -0
- package/docs/assets/handoff/latest.webp +0 -0
- package/docs/assets/handoff/saved.webp +0 -0
- package/docs/assets/readme/demo.webp +0 -0
- package/package.json +7 -1
- package/plugin/.muse-plugin/plugin.json +1 -1
- package/plugin/skills/readme-studio/templates/hyperframes-cover/package-lock.json +3 -3
- package/plugin/skills/readme-studio/templates/remotion-cover/package-lock.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1 — 2026-10-26
|
|
4
|
+
|
|
5
|
+
- The README studio's HyperFrames and Remotion cover templates pin newer `hono` and `fast-uri` in their lockfiles, picking up upstream fixes. A fresh template setup installs these versions.
|
|
6
|
+
- Both READMEs are rewritten with real Muse Code captures of the LIT card, the handoff and a short demo, plus tables for how LitMuse adds to the host, the session lifecycle and the skills. The six captures ship in the package, so the npm page shows them too.
|
|
7
|
+
- The hook code is the same as 0.1.0, so hook approvals carry over. `muse plugins update` asks you to approve the LitMuse agents again; `npx @litfamily/litmuse install` lists them and asks once.
|
|
8
|
+
|
|
3
9
|
## 0.1.0 — 2026-10-22
|
|
4
10
|
|
|
5
11
|
First release of LitMuse, the LitFamily member for Meta's Muse Code (built and probed against Muse Code 1.4.10).
|
package/README.md
CHANGED
|
@@ -5,20 +5,43 @@
|
|
|
5
5
|
|
|
6
6
|
<p align="center">LitMuse gives Meta's Muse Code the habit of planning before it edits, checking what it built, and leaving a handoff, so the next session starts where this one stopped. One npm command installs it as a Muse plugin.</p>
|
|
7
7
|
|
|
8
|
-
<p align="center"
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/@litfamily/litmuse"><img src="https://img.shields.io/npm/v/@litfamily/litmuse?color=FF6337&label=npm" alt="npm version" /></a>
|
|
10
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license" /></a>
|
|
11
|
+
<a href="https://github.com/wjgoarxiv/litmuse/stargazers"><img src="https://img.shields.io/github/stars/wjgoarxiv/litmuse?style=flat" alt="GitHub stars" /></a>
|
|
12
|
+
</p>
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
<p align="center"><a href="#install">Install</a> <a href="#quick-start">Quick start</a> <a href="#the-status-card">Status card</a> <a href="#automatic-handoff">Handoff</a> <a href="#safety-and-uninstall">Safety</a> <a href="./README_ko-KR.md">한국어</a></p>
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
## What a session looks like
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
<p align="center"><img src="./docs/assets/readme/demo.webp" width="960" alt="Terminal capture of three real commands on this Mac. muse --version prints Muse Code 1.4.11. litmuse status --card shows the lit-plan route active with plan 0 of 2 and the next open row. litmuse models lists the muse-spark models from the host catalog." /></p>
|
|
19
|
+
|
|
20
|
+
Stripped to three lines, a planning session goes like this:
|
|
15
21
|
|
|
16
22
|
```text
|
|
17
23
|
you type lit plan a tiny todo app
|
|
18
|
-
it does loads lit-plan, reads the repo, writes plans/todo-app.md with ordered
|
|
24
|
+
it does loads lit-plan, reads the repo, writes plans/todo-app.md with ordered rows
|
|
19
25
|
it ends "Plan saved. Run /start-work when you are happy with it."
|
|
20
26
|
```
|
|
21
27
|
|
|
28
|
+
LitMuse suits people who run Muse Code on real projects and want two things from it: proof before done, and sessions that pick up where the last one stopped. It helps most on work that runs longer than one sitting: a feature with tests, a refactor, a research question. It also builds slides and Word reports and cleans up stiff Korean or English prose.
|
|
29
|
+
|
|
30
|
+
Muse runs the session while lit adds the routine around it.
|
|
31
|
+
|
|
32
|
+
| The host | What lit adds |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Takes a line and gets to work | Pins the goal and writes the failing test first |
|
|
35
|
+
| Fills its context over a long session | Writes the handoff before compaction, reads it back after |
|
|
36
|
+
| Opens the next session blank | `lit recap` reads the handoff and names the next step |
|
|
37
|
+
| Calls it done when the model says so | Checks the plan with tests and real-surface proof |
|
|
38
|
+
|
|
39
|
+
## Why LitMuse
|
|
40
|
+
|
|
41
|
+
Muse Code starts fast: you type a line in the terminal and it gets to work. The trouble shows up later. A long session fills its context, the next session begins without what the last one learned, and "done" often means the model said so. You end up re-explaining where you were and checking by hand what really works.
|
|
42
|
+
|
|
43
|
+
LitMuse gives each session a routine. Start a prompt with `lit` and the plugin's prompt hook tells Muse which LitMuse skill to load before it touches anything. A bigger change gets a written plan in `plans/` first. The work is checked against that plan with tests and a look at the real surface, and anything nobody could check is marked as unverified. Before you stop, a handoff in `.litmuse/handoff/` records what was built, how it was checked and what is left.
|
|
44
|
+
|
|
22
45
|
Muse still runs the session and picks the model. LitMuse adds the way of working, and it lives in plain files you can read.
|
|
23
46
|
|
|
24
47
|
## Install
|
|
@@ -39,6 +62,18 @@ npx @litfamily/litmuse doctor
|
|
|
39
62
|
|
|
40
63
|
`doctor` ends with `LitMuse doctor: PASS` when everything is in place. Each capability that still waits for approval appears as `APPROVAL NEEDED` together with the exact command.
|
|
41
64
|
|
|
65
|
+
To update, run the install command again. To remove everything, see Safety and uninstall below.
|
|
66
|
+
|
|
67
|
+
The lifecycle runs through this table.
|
|
68
|
+
|
|
69
|
+
| Task | Command |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| Install | `npx @litfamily/litmuse install` |
|
|
72
|
+
| Preview first | `npx @litfamily/litmuse install --dry-run` |
|
|
73
|
+
| Update | `npx @litfamily/litmuse install` |
|
|
74
|
+
| Check | `npx @litfamily/litmuse doctor` |
|
|
75
|
+
| Remove | `npx @litfamily/litmuse uninstall` |
|
|
76
|
+
|
|
42
77
|
Useful switches: `--dry-run` previews and writes nothing; `--yes` lets an agent or CI shell install (a shell without a terminal otherwise only previews); `--approve` approves the capabilities without the question, for scripts; `--scope project` installs for one project.
|
|
43
78
|
|
|
44
79
|
### Let a coding agent install it
|
|
@@ -66,53 +101,87 @@ Use only the official npm package @litfamily/litmuse. Show me your plan and wait
|
|
|
66
101
|
|
|
67
102
|
Headless runs work the same way: `muse exec --json "lit plan a tiny todo app" < /dev/null`.
|
|
68
103
|
|
|
104
|
+
## The status card
|
|
105
|
+
|
|
106
|
+
Muse's `/hud` is a fixed list of on/off fields, so plugins add nothing to it. LitMuse keeps its own live record instead: the route, the plan progress, and the child agents running right now. `/lit-status` and `litmuse status --card` show that record. For the terminal chrome around the card, the recommended `/hud` and theme preset lives in [docs/hud-preset.md](./docs/hud-preset.md).
|
|
107
|
+
|
|
108
|
+
Read the card from top to bottom. The first line names the workflow and how long it has run, or says no route is active in this workspace. A second line names the plan file with ticked and total rows and the next open row. A lanes line names each running tool with its elapsed time, then each finished lane.
|
|
109
|
+
|
|
110
|
+
At rest the card reports no active route:
|
|
111
|
+
|
|
112
|
+
<p align="center"><img src="./docs/assets/card/idle.webp" width="960" alt="The status card with no active route in this workspace." /></p>
|
|
113
|
+
|
|
114
|
+
While a plan runs, the card names the route, the plan file, and the next open row:
|
|
115
|
+
|
|
116
|
+
<p align="center"><img src="./docs/assets/card/working.webp" width="960" alt="The status card while the lit-plan route is active, naming the plan file with 0 of 2 rows ticked and the next open row." /></p>
|
|
117
|
+
|
|
118
|
+
Ticking a row moves the count and the next-row pointer:
|
|
119
|
+
|
|
120
|
+
<p align="center"><img src="./docs/assets/card/after.webp" width="960" alt="The same card after the first row is ticked: 1 of 2 with the second row named next." /></p>
|
|
121
|
+
|
|
122
|
+
The card reads the hook-kept state under `~/.local/state/litmuse/`, outside the project.
|
|
123
|
+
|
|
124
|
+
## Automatic handoff
|
|
125
|
+
|
|
126
|
+
A long session fills the model's context, and when Muse compacts it, detail drops out of the summary. Before the compaction, the PreCompact hook writes a handoff file; after it, SessionStart reads the fresh file back into the conversation. Two commands put this to work: `lit handoff` before you stop, `lit recap` when you return. The packet names what was built, how it was checked, and what is left.
|
|
127
|
+
|
|
128
|
+
The hook answers with one recorded line:
|
|
129
|
+
|
|
130
|
+
<p align="center"><img src="./docs/assets/handoff/saved.webp" width="960" alt="The PreCompact hook output line recording that it saved .litmuse/handoff/latest.md." /></p>
|
|
131
|
+
|
|
132
|
+
The snapshot names the trigger, the session, the route, the plan with its open rows, and recent ledger lines:
|
|
133
|
+
|
|
134
|
+
<p align="center"><img src="./docs/assets/handoff/latest.webp" width="960" alt="The handoff snapshot: trigger, session, the lit-plan route, the plan with 0 ticked and 2 open rows, and recent ledger lines." /></p>
|
|
135
|
+
|
|
69
136
|
## What you get
|
|
70
137
|
|
|
71
|
-
**39 skills**, each a dense Muse skill loaded on demand, with the references, scripts, templates and engines it needs inside its own folder. The catalog only holds their short descriptions, about 3.7 KB in total, so they keep their place even next to a large personal skill collection
|
|
138
|
+
**39 skills**, each a dense Muse skill loaded on demand, with the references, scripts, templates and engines it needs inside its own folder. The catalog only holds their short descriptions, about 3.7 KB in total, so they keep their place even next to a large personal skill collection.
|
|
72
139
|
|
|
73
|
-
|
|
74
|
-
- Ideas and planning: lit-brainstorm, deep-interview, lit-crucible, lit-plan
|
|
75
|
-
- Building: start-work, lit-code, debugging, refactor, lit-commit, lsp, lsp-setup
|
|
76
|
-
- Review and cleanup: review-work (plan review and work review), visual-qa, comment-checker, lit-burnoff, lit-burnoff-file
|
|
77
|
-
- Research and knowledge: litresearch, autoresearch, autoconference, wikify, lit-comprehend
|
|
78
|
-
- Teams: lit-team
|
|
79
|
-
- Prose: lit-humanizer (Korean and English)
|
|
80
|
-
- Continuity and guidance: lit-recap, lit-handoff, lit-init, rules
|
|
81
|
-
- Interface and docs: frontend-ui-ux, readme-studio
|
|
82
|
-
- Documents and figures: lit-docx, lit-pptx, lit-scientific-visualization, lit-diagram-drawer
|
|
83
|
-
- Film and covers: lit-typographic-motion (short films, kinetic type, lyric videos and seamless README cover loops, each rendered, gated on the decoded file and looked at frame by frame)
|
|
84
|
-
- Tools: structural-search, browser-drive
|
|
140
|
+
Every skill below ships in its own folder and loads on demand. Find the row that matches the task at hand.
|
|
85
141
|
|
|
86
|
-
|
|
142
|
+
| Area | Skills | Role |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| Work loop | lit-loop, litgoal, litwork | Goal pinned, failing test first, record left |
|
|
145
|
+
| Plan and build | lit-plan, start-work, lit-code, debugging, refactor, lit-commit, lsp, lsp-setup | Written plan, then row-by-row build |
|
|
146
|
+
| Ideas first | lit-brainstorm, deep-interview, lit-crucible | Diverge, clarify, pressure-test |
|
|
147
|
+
| Review and cleanup | review-work, visual-qa, comment-checker, lit-burnoff, lit-burnoff-file | Second look, then residue stripped |
|
|
148
|
+
| Research | litresearch, autoresearch, autoconference, wikify, lit-comprehend | Parallel searchers, traced claims |
|
|
149
|
+
| Teams | lit-team | Child agents behind one packet |
|
|
150
|
+
| Prose | lit-humanizer | Korean and English cleanup, facts kept |
|
|
151
|
+
| Continuity | lit-recap, lit-handoff, lit-init, rules | Handoffs, recaps, orientation |
|
|
152
|
+
| Interface and docs | frontend-ui-ux, readme-studio | Accessible UI, fact-checked READMEs |
|
|
153
|
+
| Documents and figures | lit-docx, lit-pptx, lit-scientific-visualization, lit-diagram-drawer | Decks, styled docs, plots, diagrams |
|
|
154
|
+
| Film and covers | lit-typographic-motion | Short films and cover loops, gated on decoded output |
|
|
155
|
+
| Tools | structural-search, browser-drive | Syntax-shaped search, live pages |
|
|
156
|
+
|
|
157
|
+
The document, diagram, README-cover and figure skills ship pinned engines (`office`, `diagram`, `readme`, `sciviz`). Each installs on first use into `~/.local/share/litmuse/runtime/<name>` and nowhere else; inside Muse's proxy-only sandbox that first install can be refused, so pre-warm them from a terminal with `npx @litfamily/litmuse runtime install all` (`runtime status` shows each one). The motion skill's engine (`motion`: its font set and type-engine package) installs from a terminal only, so `runtime install motion` (or `all`) is the way it gets there. They also call programs already on your machine: Python 3.10 to 3.14 (a newer `python3` is passed over for the newest `python3.X` in that range), LibreOffice, pandoc, Poppler, Chrome or Chromium, ffmpeg, libwebp (`img2webp`, `dwebp`), ast-grep and the language checkers the `lsp` skill drives. `doctor` lists what is missing and the command that installs it; LitMuse installs nothing globally.
|
|
87
158
|
|
|
88
159
|
**4 commands**: `/lit <route> <task>`, `/lit-korean <file or text>`, `/lit-status`, `/lit-hud`.
|
|
89
160
|
|
|
90
|
-
**10 hooks**: SessionStart (LitMuse context and routes; after a compaction it re-injects the saved handoff once, and it adds the answer style you chose with `litmuse style`), UserPromptSubmit (`lit` activation; a later `lit` while its route is active continues it, `lit <other route>` switches, a bare `lit` resumes a started plan, `lit new` or `lit restart` starts over), PreToolUse (during lit-plan: writes through write_file, edit_file, apply_patch or delete_file stay inside `plans/` and `.litmuse/`, shell commands
|
|
161
|
+
**10 hooks**: SessionStart (LitMuse context and routes; after a compaction it re-injects the saved handoff once, and it adds the answer style you chose with `litmuse style`), UserPromptSubmit (`lit` activation; a later `lit` while its route is active continues it, `lit <other route>` switches, a bare `lit` resumes a started plan, `lit new` or `lit restart` starts over), PreToolUse (during lit-plan: writes through write_file, edit_file, apply_patch or delete_file stay inside `plans/` and `.litmuse/`, shell commands are read-only, and only read-only LitMuse agents may be spawned; on every route: guards against clustered negations and clustered hedges that a write adds to Markdown or text prose), PostToolUse (the tool ledger, plus the whole-line comments an edit added for comment-checker and an advisory lit-humanizer check on written prose; on the motion route it also notes each render and each image `read_file` opened), PostToolUseFailure (ledger), Stop (a lit-plan turn ends after its plan file exists; a motion turn ends when the skill's done-check passes on the last render, or after two holds with a plain not-done notice; start-work keeps going while plan rows are open and litgoal while criteria are open, each at most 3 holds in a row without progress), PreCompact (writes `.litmuse/handoff/latest.md` before Muse compacts), SubagentStart (the return format for child agents), SubagentStop and SessionEnd (ledger lines). The hooks also keep a live record of the route, plan progress and running child agents, which `/lit-status` and `npx @litfamily/litmuse status --card` show, because Muse's `/hud` shows fixed fields only.
|
|
91
162
|
|
|
92
163
|
**11 agents**, spawned as `litmuse/<name>`: lit-planner, lit-executor, lit-verifier, qa-runner, quality-reviewer, librarian-researcher, and five Korean prose agents. Reviewers and the Korean agents get read and search tools only.
|
|
93
164
|
|
|
94
165
|
**Models**: `npx @litfamily/litmuse models` lists the models and effort tiers your Muse install offers, read from Muse's own catalog. A model Meta adds later shows up there with no LitMuse update.
|
|
95
166
|
|
|
96
|
-
**Status bar**: Muse's `/hud` is a list of on/off fields. The recommended preset and theme are in [docs/hud-preset.md](./docs/hud-preset.md).
|
|
97
|
-
|
|
98
167
|
## What a planning turn may do
|
|
99
168
|
|
|
100
|
-
`lit plan` turns are planning only, and the PreToolUse hook
|
|
169
|
+
`lit plan` turns are planning only, and the PreToolUse hook holds that line with an allowlist. Anything unlisted is refused, including MCP tools and tools a later Muse release adds.
|
|
101
170
|
|
|
102
171
|
- Read-only tools: `read_file`, `search`, `read_skill`, `web_search`, `web_fetch`, `read_memory`, `work_status`, `work_list`, `subagent_status`, `subagent_wait`, `subagent_read_result`, `subagent_cancel`, `request_user_input`, `get_goal`, `cron_list`.
|
|
103
172
|
- File writes (`write_file`, `edit_file`, `apply_patch`, `delete_file`) only inside `plans/` and `.litmuse/`, after `..` and symlinks are resolved.
|
|
104
173
|
- Shell (`bash`, `exec_command`, `shell`) only for one plain command from `ls`, `cat`, `head`, `tail`, `wc`, `rg` or `git log|status|diff|show`, with listed flags and no `;`, `&`, `|`, `<`, `>`, backticks, `$` or line breaks. `bash_input` is refused.
|
|
105
174
|
- Child agents only as read-only `litmuse/*` agents (lit-planner, librarian-researcher, lit-verifier, quality-reviewer and the Korean prose agents).
|
|
106
175
|
|
|
107
|
-
Route state lives outside the project, under `~/.local/state/litmuse/`, so no tool in a planning turn
|
|
176
|
+
Route state lives outside the project, under `~/.local/state/litmuse/`, so no tool in a planning turn reaches it. If that state goes missing or breaks during a plan turn, the limit stays on. Each hook's declared command carries a digest of its code, so when an update changes a hook, Muse asks you to approve it again.
|
|
108
177
|
|
|
109
178
|
## Living next to other tools
|
|
110
179
|
|
|
111
|
-
Muse also reads personal rules and skills written for other coding tools, such as a user rules file or a personal skills folder. LitMuse leaves that on, because those rules are yours. Its session context asks Muse to use the LitMuse skill for every lit route, and `doctor` warns when a personal skill shares a name with a LitMuse skill or comes from another tool's plugin folder.
|
|
180
|
+
Muse also reads personal rules and skills written for other coding tools, such as a user rules file or a personal skills folder. LitMuse leaves that on, because those rules are yours. Its session context asks Muse to use the LitMuse skill for every lit route, and `doctor` warns when a personal skill shares a name with a LitMuse skill or comes from another tool's plugin folder. For a clean run, switch off "Personal rules fallback" and "Personal skills fallback" in `/settings`; a headless run takes `muse exec --no-foreign-personal-context` (the interactive `muse` rejects that flag on 1.4.11).
|
|
112
181
|
|
|
113
182
|
## Safety and uninstall
|
|
114
183
|
|
|
115
|
-
- The installer writes to `~/.local/share/litmuse/` and, through the `muse` CLI, to Muse's own plugin store and settings. It backs up `~/.config/muse/settings.json` and Muse's `installed.json` first, and it
|
|
184
|
+
- The installer writes to `~/.local/share/litmuse/` and, through the `muse` CLI, to Muse's own plugin store and settings. It backs up `~/.config/muse/settings.json` and Muse's `installed.json` first, and it reads Muse's credential file in no step.
|
|
116
185
|
- It refuses to replace a bundle directory that is a symbolic link, holds someone else's files, or was edited after install.
|
|
117
186
|
- It writes nothing under `~/.claude` or `~/.codex`; a test pins that.
|
|
118
187
|
- Hooks fail open: if one breaks, your session continues.
|
package/README_ko-KR.md
CHANGED
|
@@ -5,13 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
<p align="center">LitMuse는 Meta의 Muse Code에 일하는 습관을 붙여 줍니다. 고치기 전에 계획하고, 만든 것을 확인하고, 끝낼 때 인계 메모를 남깁니다. 그래서 다음 세션이 이번 세션이 멈춘 자리에서 바로 이어집니다. npm 명령 하나로 Muse 플러그인으로 설치됩니다.</p>
|
|
7
7
|
|
|
8
|
-
<p align="center"
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/@litfamily/litmuse"><img src="https://img.shields.io/npm/v/@litfamily/litmuse?color=FF6337&label=npm" alt="npm version" /></a>
|
|
10
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license" /></a>
|
|
11
|
+
<a href="https://github.com/wjgoarxiv/litmuse/stargazers"><img src="https://img.shields.io/github/stars/wjgoarxiv/litmuse?style=flat" alt="GitHub stars" /></a>
|
|
12
|
+
</p>
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
<p align="center"><a href="#설치">설치</a> <a href="#빠른-시작">빠른 시작</a> <a href="#상태-카드">상태 카드</a> <a href="#자동-핸드오프">핸드오프</a> <a href="#안전과-제거">안전</a> <a href="./README.md">English</a></p>
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
## 세션은 이렇게 돌아갑니다
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
<p align="center"><img src="./docs/assets/readme/demo.webp" width="960" alt="이 Mac에서 실행한 실제 명령 세 개의 터미널 캡처. muse --version은 Muse Code 1.4.11을 출력합니다. litmuse status --card는 lit-plan 경로가 활성 상태이며 계획이 0/2이고 다음 행을 가리킵니다. litmuse models는 호스트 카탈로그의 muse-spark 모델을 보여 줍니다." /></p>
|
|
19
|
+
|
|
20
|
+
세 줄로 줄이면 계획 세션은 이렇게 흘러갑니다.
|
|
15
21
|
|
|
16
22
|
```text
|
|
17
23
|
입력 lit plan a tiny todo app
|
|
@@ -19,6 +25,23 @@ LitMuse는 세션마다 따라갈 순서를 줍니다. 프롬프트를 `lit`으
|
|
|
19
25
|
마무리 "계획을 저장했습니다. 괜찮으면 /start-work를 실행하세요."
|
|
20
26
|
```
|
|
21
27
|
|
|
28
|
+
LitMuse는 실제 프로젝트에서 Muse Code를 쓰는 사람에게 맞습니다. 원하는 것은 두 가지입니다. 끝났다는 말보다 먼저 확인한 증거, 그리고 지난번에 멈춘 자리에서 이어지는 세션입니다. 한 번에 끝나지 않는 일에서 가장 쓸모가 있습니다. 테스트를 곁들인 기능, 리팩터, 조사 질문이 그런 일입니다. 발표 슬라이드와 Word 보고서도 만들고, 굳은 한국어와 영어 글도 다듬습니다.
|
|
29
|
+
|
|
30
|
+
Muse가 세션을 돌리고 lit이 주변 순서를 더합니다.
|
|
31
|
+
|
|
32
|
+
| 호스트 | lit이 더하는 것 |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| 한 줄을 받고 바로 일을 시작합니다 | 목표를 고정하고 떨어지는 테스트를 먼저 씁니다 |
|
|
35
|
+
| 긴 세션에서 컨텍스트가 찹니다 | 컴팩션 전에 인계를 쓰고 뒤에 다시 읽습니다 |
|
|
36
|
+
| 다음 세션은 빈자리에서 시작합니다 | `lit recap`이 인계를 읽고 다음 일을 가리킵니다 |
|
|
37
|
+
| 모델이 끝났다고 하면 끝납니다 | 계획에 맞춰 테스트와 실제 확인으로 검증합니다 |
|
|
38
|
+
|
|
39
|
+
## 왜 LitMuse인가
|
|
40
|
+
|
|
41
|
+
Muse Code는 시작이 빠릅니다. 터미널에 한 줄 적으면 바로 일을 시작합니다. 문제는 그다음에 옵니다. 세션이 길어지면 컨텍스트가 차고, 다음 세션은 지난 세션이 알던 것을 모른 채 시작합니다. "끝났다"는 말도 모델이 그렇게 말했다는 뜻일 때가 많습니다. 결국 어디까지 했는지 다시 설명하고, 무엇이 실제로 돌아가는지 손으로 확인하게 됩니다.
|
|
42
|
+
|
|
43
|
+
LitMuse는 세션마다 따라갈 순서를 줍니다. 프롬프트를 `lit`으로 시작하면 플러그인의 프롬프트 훅이 어떤 LitMuse 스킬을 먼저 불러올지 Muse에 알려 줍니다. 큰 변경은 먼저 `plans/`에 계획으로 적습니다. 작업은 그 계획에 맞춰 테스트와 실제 화면 확인으로 검증하고, 확인하지 못한 부분은 미확인으로 표시합니다. 끝내기 전에는 `.litmuse/handoff/`에 무엇을 만들었고 어떻게 확인했고 무엇이 남았는지 기록합니다.
|
|
44
|
+
|
|
22
45
|
세션을 돌리고 모델을 고르는 것은 여전히 Muse입니다. LitMuse는 일하는 방식을 더하고, 그 방식은 직접 읽을 수 있는 평범한 파일로 남습니다.
|
|
23
46
|
|
|
24
47
|
## 설치
|
|
@@ -39,6 +62,18 @@ npx @litfamily/litmuse doctor
|
|
|
39
62
|
|
|
40
63
|
모두 갖춰지면 `doctor`의 마지막 줄이 `LitMuse doctor: PASS`입니다. 아직 승인을 기다리는 항목은 `APPROVAL NEEDED`와 실행할 명령으로 표시됩니다.
|
|
41
64
|
|
|
65
|
+
업데이트하려면 설치 명령을 다시 실행하세요. 전부 지우려면 아래 안전과 제거를 보세요.
|
|
66
|
+
|
|
67
|
+
설치부터 제거까지 이 표의 명령으로 처리합니다.
|
|
68
|
+
|
|
69
|
+
| 작업 | 명령 |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| 설치 | `npx @litfamily/litmuse install` |
|
|
72
|
+
| 미리 보기 | `npx @litfamily/litmuse install --dry-run` |
|
|
73
|
+
| 업데이트 | `npx @litfamily/litmuse install` |
|
|
74
|
+
| 확인 | `npx @litfamily/litmuse doctor` |
|
|
75
|
+
| 제거 | `npx @litfamily/litmuse uninstall` |
|
|
76
|
+
|
|
42
77
|
자주 쓰는 옵션: `--dry-run`은 미리 보기만 하고 아무것도 쓰지 않습니다. `--yes`는 터미널이 붙지 않은 에이전트나 CI 셸에서 설치를 허용합니다(그런 셸에서는 기본으로 미리 보기만 합니다). `--approve`는 질문 없이 승인까지 진행하는 스크립트용입니다. `--scope project`는 한 프로젝트에만 설치합니다.
|
|
43
78
|
|
|
44
79
|
### 코딩 에이전트에게 설치 맡기기
|
|
@@ -51,7 +86,7 @@ Meta Muse Code용 LitFamily 플러그인인 LitMuse를 설치해 줘.
|
|
|
51
86
|
1. Node.js 20 이상과 muse가 PATH에 있는지 확인해 (`muse --version`).
|
|
52
87
|
2. 미리 보기: npx @litfamily/litmuse install --dry-run
|
|
53
88
|
3. 설치: npx @litfamily/litmuse install --yes
|
|
54
|
-
플러그인이 설치되고 승인 명령
|
|
89
|
+
플러그인이 설치되고 승인 명령 21줄이 출력돼. 승인하기 전에 나에게 묻고, 내가 좋다고 하면
|
|
55
90
|
npx @litfamily/litmuse install --yes --approve 를 실행해.
|
|
56
91
|
4. 확인: npx @litfamily/litmuse doctor 를 실행하고 마지막 줄을 알려 줘.
|
|
57
92
|
5. 무엇이 쓰였는지("Written:" 목록)와 설치기가 거부한 것이 있으면 알려 줘.
|
|
@@ -66,38 +101,72 @@ Meta Muse Code용 LitFamily 플러그인인 LitMuse를 설치해 줘.
|
|
|
66
101
|
|
|
67
102
|
헤드리스 실행도 같습니다: `muse exec --json "lit plan a tiny todo app" < /dev/null`.
|
|
68
103
|
|
|
104
|
+
## 상태 카드
|
|
105
|
+
|
|
106
|
+
Muse의 `/hud`는 켜고 끄는 고정 항목 목록이라서 플러그인 글은 올릴 수 없고, LitMuse는 자체 실시간 기록을 둡니다. 경로, 계획 진행, 지금 돌고 있는 자식 에이전트가 그 기록입니다. `/lit-status`와 `litmuse status --card`로 봅니다. 카드 주변 터미널 모양의 추천 `/hud`와 테마 프리셋은 [docs/hud-preset.md](./docs/hud-preset.md)에 있습니다.
|
|
107
|
+
|
|
108
|
+
카드는 위에서 아래로 읽습니다. 첫 줄은 워크플로 이름과 실행 시간을 적고, 활성 경로가 없으면 없다고 적습니다. 둘째 줄은 계획 파일 이름과 체크한 행 수, 전체 행 수, 다음으로 풀 행을 적습니다. 레인 줄은 실행 중인 도구와 경과 시간, 끝난 레인을 적습니다.
|
|
109
|
+
|
|
110
|
+
쉴 때 카드는 활성 경로가 없다고 알립니다.
|
|
111
|
+
|
|
112
|
+
<p align="center"><img src="./docs/assets/card/idle.webp" width="960" alt="활성 경로가 없는 상태의 상태 카드." /></p>
|
|
113
|
+
|
|
114
|
+
계획이 돌 때 카드는 경로와 계획 파일, 다음 행을 보여 줍니다.
|
|
115
|
+
|
|
116
|
+
<p align="center"><img src="./docs/assets/card/working.webp" width="960" alt="lit-plan 경로가 활성 상태인 카드. 계획 파일의 0/2행과 다음으로 풀 행을 가리킵니다." /></p>
|
|
117
|
+
|
|
118
|
+
행에 체크하면 개수와 다음 행 표시가 바뀝니다.
|
|
119
|
+
|
|
120
|
+
<p align="center"><img src="./docs/assets/card/after.webp" width="960" alt="첫 행을 체크한 뒤의 같은 카드. 1/2이며 두 번째 행을 다음으로 가리킵니다." /></p>
|
|
121
|
+
|
|
122
|
+
카드는 프로젝트 밖에 있는 `~/.local/state/litmuse/` 아래 훅 기록을 읽습니다.
|
|
123
|
+
|
|
124
|
+
## 자동 핸드오프
|
|
125
|
+
|
|
126
|
+
긴 세션은 모델 컨텍스트를 채우고, Muse가 컴팩션하면 요약에서 세부 사항이 떨어져 나갑니다. 컴팩션 전에 PreCompact 훅이 인계 파일을 쓰고, 컴팩션 뒤에 SessionStart가 새 파일을 대화로 다시 읽어들입니다. 두 명령으로 씁니다. 멈추기 전에 `lit handoff`, 돌아오면 `lit recap`. 패킷에는 만든 것, 확인한 방법, 남은 일이 들어갑니다.
|
|
127
|
+
|
|
128
|
+
훅은 기록 한 줄로 답합니다.
|
|
129
|
+
|
|
130
|
+
<p align="center"><img src="./docs/assets/handoff/saved.webp" width="960" alt="PreCompact 훅의 출력 한 줄. .litmuse/handoff/latest.md를 저장했다고 기록합니다." /></p>
|
|
131
|
+
|
|
132
|
+
스냅샷에는 실행 계기, 세션, 경로, 열린 행이 있는 계획, 최근 기록 줄이 들어갑니다.
|
|
133
|
+
|
|
134
|
+
<p align="center"><img src="./docs/assets/handoff/latest.webp" width="960" alt="인계 스냅샷. 실행 계기와 세션, lit-plan 경로, 0개 체크와 2개 열린 행의 계획, 최근 기록 줄을 보여 줍니다." /></p>
|
|
135
|
+
|
|
69
136
|
## 들어 있는 것
|
|
70
137
|
|
|
71
138
|
**스킬 39개.** 필요할 때 불러오는 밀도 높은 Muse 스킬이며, 각 스킬에 필요한 참고 문서, 스크립트, 템플릿, 엔진이 그 스킬 폴더 안에 함께 들어 있습니다. 카탈로그에는 짧은 설명만 올라가며, 모두 합쳐 약 3.7 KB라서 개인 스킬이 많은 환경에서도 자리를 지킵니다.
|
|
72
139
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
140
|
+
아래 모든 스킬은 각자 폴더에 들어 있으며 필요할 때 불러옵니다. 하려는 일에 맞는 행을 찾으세요.
|
|
141
|
+
|
|
142
|
+
| 분야 | 스킬 | 역할 |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| 작업 고리 | lit-loop, litgoal, litwork | 목표 고정, 떨어지는 테스트 먼저, 기록 남기기 |
|
|
145
|
+
| 계획과 구현 | lit-plan, start-work, lit-code, debugging, refactor, lit-commit, lsp, lsp-setup | 계획서 작성, 행별 구현 |
|
|
146
|
+
| 아이디어 다지기 | lit-brainstorm, deep-interview, lit-crucible | 넓히기, 묻기, 압박 테스트 |
|
|
147
|
+
| 검토와 정리 | review-work, visual-qa, comment-checker, lit-burnoff, lit-burnoff-file | 다시 보기, 잔재 지우기 |
|
|
148
|
+
| 조사 | litresearch, autoresearch, autoconference, wikify, lit-comprehend | 병렬 탐색, 근거 추적 |
|
|
149
|
+
| 팀 | lit-team | 하나의 패킷 뒤 자식 에이전트 |
|
|
150
|
+
| 글 | lit-humanizer | 한국어와 영어 다듬기, 사실 유지 |
|
|
151
|
+
| 이어 가기 | lit-recap, lit-handoff, lit-init, rules | 인계, 회고, 길잡이 |
|
|
152
|
+
| 화면과 문서 | frontend-ui-ux, readme-studio | 접근 쉬운 화면, 사실 확인된 README |
|
|
153
|
+
| 문서와 그림 | lit-docx, lit-pptx, lit-scientific-visualization, lit-diagram-drawer | 데크, 꾸민 문서, 그래프, 다이어그램 |
|
|
154
|
+
| 영상과 표지 | lit-typographic-motion | 짧은 영상과 표지 고리, 인코딩본 검사 |
|
|
155
|
+
| 도구 | structural-search, browser-drive | 코드 모양 검색, 살아 있는 페이지 |
|
|
156
|
+
|
|
157
|
+
문서, 다이어그램, README 표지, 그림 스킬은 버전이 고정된 엔진(`office`, `diagram`, `readme`, `sciviz`)을 함께 씁니다. 엔진은 처음 쓸 때 `~/.local/share/litmuse/runtime/<이름>`에만 설치됩니다. Muse의 프록시 전용 샌드박스에서는 이 첫 설치가 막힐 수 있으니 터미널에서 `npx @litfamily/litmuse runtime install all`로 미리 설치해 두세요(`runtime status`로 상태를 봅니다). 모션 스킬의 엔진(`motion`: 글꼴 묶음과 타입 엔진 패키지)은 터미널에서만 설치되므로, `runtime install motion`(또는 `all`)으로 들입니다. 이 스킬들은 내 컴퓨터에 이미 있는 프로그램도 씁니다: Python 3.10~3.14(더 새로운 `python3`는 건너뛰고 이 범위에서 가장 새로운 `python3.X`를 씀), LibreOffice, pandoc, Poppler, Chrome 또는 Chromium, ffmpeg, libwebp(`img2webp`, `dwebp`), ast-grep, 그리고 `lsp` 스킬이 부르는 언어 검사 도구. 빠진 것과 설치 명령은 `doctor`가 알려 주며, LitMuse가 전역으로 무언가를 설치하는 일은 없습니다.
|
|
87
158
|
|
|
88
159
|
**명령 4개**: `/lit <경로> <작업>`, `/lit-korean <파일 또는 글>`, `/lit-status`, `/lit-hud`.
|
|
89
160
|
|
|
90
|
-
**훅 10개**: SessionStart(LitMuse 컨텍스트와 경로 표. 컴팩션 뒤에는 저장해 둔 인계 메모를 한 번 다시 넣고, `litmuse style`로 고른 답변 스타일도 더함), UserPromptSubmit(맨 앞의 `lit` 활성화. 같은 경로가 이미 켜져 있으면 이어서 진행, 다른 경로면 전환, 맨 `lit`은 시작한 계획을 재개, `lit new`·`lit restart`는 새로 시작), PreToolUse(lit-plan 동안 write_file·edit_file·apply_patch·delete_file 쓰기는 `plans/`와 `.litmuse/` 안으로 제한하고 셸 명령은 읽기 전용만 허용, 자식 에이전트는 읽기 전용 LitMuse 에이전트만 허용, 모든 경로에서 쓰기가 Markdown이나 텍스트 글에 새로 더하는 부정문 몰림과 얼버무림 몰림 검사), PostToolUse(도구 기록, 편집이 새로 더한 한 줄 주석을 comment-checker에 넘기고 쓴 글에는 lit-humanizer 참고 검사. 모션 경로에서는 렌더 실행과 `read_file`로 연 이미지도 기록), PostToolUseFailure(기록), Stop(lit-plan 턴은 계획 파일이 생긴 뒤 끝남. 모션 턴은 마지막 렌더가 스킬의 완료 검사를 통과하면 끝나고, 두 번 붙잡은 뒤에는 아직 끝나지 않았다고 분명히 말하게 함. start-work는 계획 행이, litgoal은 기준이 남아 있으면 이어 가되 진전 없이 연속 3번까지만 붙잡음), PreCompact(Muse가 컴팩션하기 전에 `.litmuse/handoff/latest.md`를 씀), SubagentStart(자식 에이전트의 보고 형식), SubagentStop·SessionEnd(기록 줄). 훅은 경로, 계획 진행, 실행 중인 자식 에이전트도 실시간 기록으로 남기며, Muse의 `/hud`는
|
|
161
|
+
**훅 10개**: SessionStart(LitMuse 컨텍스트와 경로 표. 컴팩션 뒤에는 저장해 둔 인계 메모를 한 번 다시 넣고, `litmuse style`로 고른 답변 스타일도 더함), UserPromptSubmit(맨 앞의 `lit` 활성화. 같은 경로가 이미 켜져 있으면 이어서 진행, 다른 경로면 전환, 맨 `lit`은 시작한 계획을 재개, `lit new`·`lit restart`는 새로 시작), PreToolUse(lit-plan 동안 write_file·edit_file·apply_patch·delete_file 쓰기는 `plans/`와 `.litmuse/` 안으로 제한하고 셸 명령은 읽기 전용만 허용, 자식 에이전트는 읽기 전용 LitMuse 에이전트만 허용, 모든 경로에서 쓰기가 Markdown이나 텍스트 글에 새로 더하는 부정문 몰림과 얼버무림 몰림 검사), PostToolUse(도구 기록, 편집이 새로 더한 한 줄 주석을 comment-checker에 넘기고 쓴 글에는 lit-humanizer 참고 검사. 모션 경로에서는 렌더 실행과 `read_file`로 연 이미지도 기록), PostToolUseFailure(기록), Stop(lit-plan 턴은 계획 파일이 생긴 뒤 끝남. 모션 턴은 마지막 렌더가 스킬의 완료 검사를 통과하면 끝나고, 두 번 붙잡은 뒤에는 아직 끝나지 않았다고 분명히 말하게 함. start-work는 계획 행이, litgoal은 기준이 남아 있으면 이어 가되 진전 없이 연속 3번까지만 붙잡음), PreCompact(Muse가 컴팩션하기 전에 `.litmuse/handoff/latest.md`를 씀), SubagentStart(자식 에이전트의 보고 형식), SubagentStop·SessionEnd(기록 줄). 훅은 경로, 계획 진행, 실행 중인 자식 에이전트도 실시간 기록으로 남기며, Muse의 `/hud`는 고정 항목만 보여 주므로 이 기록은 `/lit-status`와 `npx @litfamily/litmuse status --card`로 봅니다.
|
|
91
162
|
|
|
92
163
|
**에이전트 11개**, `litmuse/<이름>`으로 띄웁니다: lit-planner, lit-executor, lit-verifier, qa-runner, quality-reviewer, librarian-researcher, 그리고 한국어 글 에이전트 다섯. 리뷰어와 한국어 에이전트는 읽기와 검색 도구만 씁니다.
|
|
93
164
|
|
|
94
165
|
**모델**: `npx @litfamily/litmuse models`는 내 Muse가 제공하는 모델과 추론 단계를 Muse 자체 카탈로그에서 읽어 보여 줍니다. Meta가 나중에 추가하는 모델도 LitMuse 업데이트 없이 그대로 나타납니다.
|
|
95
166
|
|
|
96
|
-
**상태 표시줄**: Muse의 `/hud`는 켜고 끄는 항목 목록입니다. 추천 프리셋과 테마는 [docs/hud-preset.md](./docs/hud-preset.md)에 있습니다.
|
|
97
|
-
|
|
98
167
|
## 계획 턴에서 할 수 있는 일
|
|
99
168
|
|
|
100
|
-
`lit plan` 턴은 계획 전용이며, PreToolUse 훅이 허용 목록으로 이를 지킵니다. 목록에 없는 도구는 MCP
|
|
169
|
+
`lit plan` 턴은 계획 전용이며, PreToolUse 훅이 허용 목록으로 이를 지킵니다. 목록에 없는 도구는 MCP 도구와 나중에 Muse에 추가되는 도구까지 모두 거부됩니다.
|
|
101
170
|
|
|
102
171
|
- 읽기 도구: `read_file`, `search`, `read_skill`, `web_search`, `web_fetch`, `read_memory`, `work_status`, `work_list`, `subagent_status`, `subagent_wait`, `subagent_read_result`, `subagent_cancel`, `request_user_input`, `get_goal`, `cron_list`.
|
|
103
172
|
- 파일 쓰기(`write_file`, `edit_file`, `apply_patch`, `delete_file`)는 `..`와 심볼릭 링크를 풀어 본 뒤 `plans/`와 `.litmuse/` 안에서만 허용합니다.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litfamily/litmuse",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Installer for LitMuse: skills, hooks and agents that help Meta's Muse Code plan, build, check and hand off work.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"muse",
|
|
@@ -38,6 +38,12 @@
|
|
|
38
38
|
"docs/hud-preset.md",
|
|
39
39
|
"docs/assets/cover-motion.webp",
|
|
40
40
|
"docs/assets/cover-motion-still.webp",
|
|
41
|
+
"docs/assets/readme/demo.webp",
|
|
42
|
+
"docs/assets/card/idle.webp",
|
|
43
|
+
"docs/assets/card/working.webp",
|
|
44
|
+
"docs/assets/card/after.webp",
|
|
45
|
+
"docs/assets/handoff/saved.webp",
|
|
46
|
+
"docs/assets/handoff/latest.webp",
|
|
41
47
|
"README.md",
|
|
42
48
|
"README_ko-KR.md",
|
|
43
49
|
"CHANGELOG.md",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "litmuse",
|
|
4
4
|
"displayName": "LitMuse",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.1",
|
|
6
6
|
"description": "LitFamily workflows for Muse Code: bare lit activation, planning, evidence-bound execution, review, research, handoff and Korean prose care.",
|
|
7
7
|
"compat": {
|
|
8
8
|
"source": "native",
|
|
@@ -1466,9 +1466,9 @@
|
|
|
1466
1466
|
}
|
|
1467
1467
|
},
|
|
1468
1468
|
"node_modules/hono": {
|
|
1469
|
-
"version": "4.13.
|
|
1470
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.
|
|
1471
|
-
"integrity": "sha512
|
|
1469
|
+
"version": "4.13.13",
|
|
1470
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.13.tgz",
|
|
1471
|
+
"integrity": "sha512-CQ46U0ZkAGmbT/4UxdzzGJpacP2IeKgY4a5/tOI9AABbpOMfK739wfDXmv1usCk+3RkKj1hQy4/fjhiwa2xlrA==",
|
|
1472
1472
|
"dev": true,
|
|
1473
1473
|
"license": "MIT",
|
|
1474
1474
|
"engines": {
|
|
@@ -2582,9 +2582,9 @@
|
|
|
2582
2582
|
"license": "MIT"
|
|
2583
2583
|
},
|
|
2584
2584
|
"node_modules/fast-uri": {
|
|
2585
|
-
"version": "3.1.
|
|
2586
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
2587
|
-
"integrity": "sha512-
|
|
2585
|
+
"version": "3.1.9",
|
|
2586
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
|
|
2587
|
+
"integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
|
|
2588
2588
|
"funding": [
|
|
2589
2589
|
{
|
|
2590
2590
|
"type": "github",
|