@rafiqui987/markode 0.2.7 → 0.3.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/README.md +240 -109
- package/dist/cli.js +1289 -639
- package/dist/web/assets/{abnfDiagram-WEYOIA3C-DpbJC7Xp.js → abnfDiagram-WEYOIA3C-C-xz1zhH.js} +1 -1
- package/dist/web/assets/{arc-DC4i8MWg.js → arc-0NKn9s7n.js} +1 -1
- package/dist/web/assets/{architecture-WOLXFQ4H-eBViYpWx.js → architecture-WOLXFQ4H-yvNPw04L.js} +1 -1
- package/dist/web/assets/{architectureDiagram-ZHVYKT53-BUdoz7It.js → architectureDiagram-ZHVYKT53-DiNkPsUS.js} +1 -1
- package/dist/web/assets/{blockDiagram-RJAE7QA3-g9DAd_oM.js → blockDiagram-RJAE7QA3-Bm5an-ZR.js} +1 -1
- package/dist/web/assets/{c4Diagram-XDPPPE54-DRNtmahu.js → c4Diagram-XDPPPE54-DCIkW1i3.js} +1 -1
- package/dist/web/assets/channel-BkrEjK89.js +1 -0
- package/dist/web/assets/{chunk-2E7WHVMD-pLVU_fk3.js → chunk-2E7WHVMD-w-cvaztJ.js} +1 -1
- package/dist/web/assets/{chunk-4EMNKR2T-CILPvkQp.js → chunk-4EMNKR2T-Dz1c4ddf.js} +1 -1
- package/dist/web/assets/{chunk-55XCU76K-D3MGCCrv.js → chunk-55XCU76K-BkW2QTCZ.js} +1 -1
- package/dist/web/assets/{chunk-7S6XSTFO-CN1GsbIT.js → chunk-7S6XSTFO-SqLAsU6N.js} +1 -1
- package/dist/web/assets/{chunk-AQDTSKZB-CUWKsFsd.js → chunk-AQDTSKZB-DwIPdMmQ.js} +1 -1
- package/dist/web/assets/{chunk-DSNLSHJZ-CwfiRg01.js → chunk-DSNLSHJZ-BNEo5raG.js} +1 -1
- package/dist/web/assets/{chunk-HAGFOTED-Do-8YoBu.js → chunk-HAGFOTED-BokAjJjC.js} +1 -1
- package/dist/web/assets/{chunk-HNE4Q36P-1-JjBgqP.js → chunk-HNE4Q36P-BlJCzrNG.js} +1 -1
- package/dist/web/assets/{chunk-NQOKRVIF-BEHeLMtz.js → chunk-NQOKRVIF-CK1D9VKN.js} +1 -1
- package/dist/web/assets/{chunk-UHW7PFBP-CC1DKtp5.js → chunk-UHW7PFBP-ycMkWOji.js} +1 -1
- package/dist/web/assets/{chunk-VQ5W62QI-CWY0eXsE.js → chunk-VQ5W62QI-CNI8j3BI.js} +1 -1
- package/dist/web/assets/{chunk-WQQL4CDK-BJl_ufDd.js → chunk-WQQL4CDK-DvQQgYrd.js} +1 -1
- package/dist/web/assets/{chunk-XXDRQBXY-DKVbKHOf.js → chunk-XXDRQBXY-cFqAbOh1.js} +1 -1
- package/dist/web/assets/{chunk-YZO67HFG-dhkHuKWt.js → chunk-YZO67HFG-CkfGL1zX.js} +1 -1
- package/dist/web/assets/{chunk-ZAUX2LTX-CA6m357j.js → chunk-ZAUX2LTX-BwdZydyj.js} +1 -1
- package/dist/web/assets/{chunk-ZCHMQSOR-DUBbqrP7.js → chunk-ZCHMQSOR-CXDXBIC6.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-4MYWR3UA-PXy4ulRK.js → classDiagram-v2-4MYWR3UA-B95ypqg8.js} +1 -1
- package/dist/web/assets/{cose-bilkent-JH36ORCC-BDYEjy3u.js → cose-bilkent-JH36ORCC-C8-ToTGn.js} +1 -1
- package/dist/web/assets/{cynefin-EF2NZ3EQ-BOMUQs4F.js → cynefin-EF2NZ3EQ-CHth0Nt9.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-WF24UDRP-cX0NpQ7L.js → cynefinDiagram-WF24UDRP-CMcwwxC8.js} +1 -1
- package/dist/web/assets/{dagre-NK4GIZVX-BAP6Gj-L.js → dagre-NK4GIZVX-BZzAgRpg.js} +1 -1
- package/dist/web/assets/{diagram-CBK3MWTC-B5AONjPA.js → diagram-CBK3MWTC-DGwxJbVy.js} +1 -1
- package/dist/web/assets/{diagram-I5XIIV2D-BkwhoH5d.js → diagram-I5XIIV2D-B17CYdAP.js} +1 -1
- package/dist/web/assets/{diagram-ODIL2UCW-DUFps_5l.js → diagram-ODIL2UCW-CYPFYS2M.js} +1 -1
- package/dist/web/assets/{diagram-PFBEJUXE-Dj94WcA4.js → diagram-PFBEJUXE-BQMumROl.js} +1 -1
- package/dist/web/assets/{diagram-RJA3I4VV-BRhr049b.js → diagram-RJA3I4VV-vHTuDO1-.js} +1 -1
- package/dist/web/assets/{diagram-TYUNFSNR-C9EtKuKD.js → diagram-TYUNFSNR-C_WYz7qL.js} +1 -1
- package/dist/web/assets/{dist-DTXSqpYP.js → dist-8bzcdWlP.js} +1 -1
- package/dist/web/assets/{dist-B91b1nu8.js → dist-8k6FSdRu.js} +1 -1
- package/dist/web/assets/{dist-BOIkyUDE.js → dist-B1oQ1VTT.js} +1 -1
- package/dist/web/assets/{dist-CMFTG-Cz.js → dist-B5uXb_Wi.js} +1 -1
- package/dist/web/assets/{dist-6_cnylgs.js → dist-BOCA4kQq.js} +1 -1
- package/dist/web/assets/{dist-DMEslBFn.js → dist-BT3nK1GA.js} +1 -1
- package/dist/web/assets/{dist-uYDRxuA0.js → dist-BruzXrfs.js} +1 -1
- package/dist/web/assets/{dist-CXAToOJL.js → dist-BwF8pAVO.js} +1 -1
- package/dist/web/assets/{dist-B-4tAY5T.js → dist-CFUj2tCy.js} +2 -2
- package/dist/web/assets/{dist-C6oRdq_x.js → dist-CM1-Tp30.js} +1 -1
- package/dist/web/assets/{dist-D5_2d6Ki.js → dist-CubY9gnU.js} +1 -1
- package/dist/web/assets/{dist-CUajnf5G.js → dist-D5EOvBuF.js} +1 -1
- package/dist/web/assets/{dist-CRKS1wXG.js → dist-DFcDEdTm.js} +1 -1
- package/dist/web/assets/{dist-CxtEXJtW.js → dist-DV0HO3Fe.js} +1 -1
- package/dist/web/assets/{dist-DfKlgEia.js → dist-DZQ_bwip.js} +1 -1
- package/dist/web/assets/{dist-SlIdOLRu.js → dist-PwT2nxki.js} +1 -1
- package/dist/web/assets/{dist-C7gsSbg8.js → dist-QI7QavRs.js} +1 -1
- package/dist/web/assets/{dist-BhvCwF6v.js → dist-cSM0Lli0.js} +1 -1
- package/dist/web/assets/{dist-hiB1k3yb.js → dist-ga2OvaLo.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-V4P3TTPT-hUPVHW_L.js → ebnfDiagram-V4P3TTPT-DLMwyX-U.js} +1 -1
- package/dist/web/assets/{elk-QONTBCTQ-CK3_-qCI.js → elk-QONTBCTQ-DVvxbtF4.js} +1 -1
- package/dist/web/assets/{erDiagram-KYQIGQAA-BnzshuRd.js → erDiagram-KYQIGQAA-DPXicJ1t.js} +1 -1
- package/dist/web/assets/{eventmodeling-K75KTNOO-YpRkYpNJ.js → eventmodeling-K75KTNOO-DpHVZP_6.js} +1 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-DrcHkm4d.js +1 -0
- package/dist/web/assets/{ganttDiagram-R7GPNTJY-Cof-TrXj.js → ganttDiagram-R7GPNTJY-Ch6NDX5Q.js} +1 -1
- package/dist/web/assets/{gitGraph-VSP46ZUC-ClyrQrUV.js → gitGraph-VSP46ZUC-CIhLB663.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-DcHBmgeW.js → gitGraphDiagram-PDYL7XHY-Ci_MIbqs.js} +1 -1
- package/dist/web/assets/index-CQGURl2V.css +1 -0
- package/dist/web/assets/index-CxwfaWVo.js +132 -0
- package/dist/web/assets/{info-OHQRW6UA-DJuVnR49.js → info-OHQRW6UA-Dau8xD88.js} +1 -1
- package/dist/web/assets/{infoDiagram-MVDRKAX5-SPivATVi.js → infoDiagram-MVDRKAX5-4spgggd7.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-luEQCi0p.js → ishikawaDiagram-HPEHV2GE-DgFczAdB.js} +1 -1
- package/dist/web/assets/{journeyDiagram-BOSHW7O7-CDWNQ0FV.js → journeyDiagram-BOSHW7O7-CJKwCuyG.js} +1 -1
- package/dist/web/assets/{kanban-definition-FNSA4HC5-kCg2Ntni.js → kanban-definition-FNSA4HC5-B_HPa_Q8.js} +1 -1
- package/dist/web/assets/{line-Cs-2UOsh.js → line-Bil8yI0B.js} +1 -1
- package/dist/web/assets/{linear-Dn78ogyi.js → linear-DJSxHb3I.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-XUq3kRg7.js → mermaid-parser.core-ByEdgqAb.js} +3 -3
- package/dist/web/assets/{mermaid.core-KP0iScKW.js → mermaid.core-CXUI3iYT.js} +4 -4
- package/dist/web/assets/{mindmap-definition-6OY57UG3-DYfhBOEV.js → mindmap-definition-6OY57UG3-w7xG6UiS.js} +1 -1
- package/dist/web/assets/{packet-JDAUHWVQ-m_mxaPh2.js → packet-JDAUHWVQ-YvTb_dXP.js} +1 -1
- package/dist/web/assets/{pegDiagram-ECIUJNBX-C57XlI0z.js → pegDiagram-ECIUJNBX-D5FI1bVJ.js} +1 -1
- package/dist/web/assets/{pie-XZMESJXO-COU-cPpy.js → pie-XZMESJXO-BH2bih-K.js} +1 -1
- package/dist/web/assets/{pieDiagram-GNMPY74T-Cgv_MwBq.js → pieDiagram-GNMPY74T-DUR82NlG.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-D57K4MC3-DLP-IJBg.js → quadrantDiagram-D57K4MC3-DauAEIyL.js} +1 -1
- package/dist/web/assets/{radar-ABXABTNO-DVnhW8Tu.js → radar-ABXABTNO-CdUXfEdf.js} +1 -1
- package/dist/web/assets/{railroad-I3PHUGI6-CbNbR4f3.js → railroad-I3PHUGI6-Djt90nhE.js} +1 -1
- package/dist/web/assets/{railroad-abnf-LNEFI6M7-QapD3MRY.js → railroad-abnf-LNEFI6M7-XqY0pGCO.js} +1 -1
- package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-CSlvjrRs.js → railroad-ebnf-DWYD2UWJ-BNSOgId4.js} +1 -1
- package/dist/web/assets/{railroad-peg-JR7BVNR7-CabNa_kN.js → railroad-peg-JR7BVNR7-DW2TRqOr.js} +1 -1
- package/dist/web/assets/{railroadDiagram-Y72NRBL7-DnlOXd0I.js → railroadDiagram-Y72NRBL7-CTDNRHBf.js} +1 -1
- package/dist/web/assets/{requirementDiagram-EQYSW5RA-Dq1MJEdy.js → requirementDiagram-EQYSW5RA-DJ5H8uqE.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-SY24JHO5--LVb7hhV.js → sankeyDiagram-SY24JHO5-Xa_3Bd4U.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-BLEHNHQU-Cg8W2Kc8.js → sequenceDiagram-BLEHNHQU-2jNpfI3_.js} +1 -1
- package/dist/web/assets/{src-w1h_Rr-8.js → src-DgNmQVK4.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-ck5PGLTp.js → stateDiagram-v2-A6IESKWZ-DtxzihUG.js} +1 -1
- package/dist/web/assets/{swimlanes-B3ENRKFQ--RxIRIY6.js → swimlanes-B3ENRKFQ-DJBCOj2u.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-_cBuwUIk.js +8 -0
- package/dist/web/assets/{timeline-definition-JXYKGLGB-Cgtckb20.js → timeline-definition-JXYKGLGB-C-ixUm6b.js} +1 -1
- package/dist/web/assets/{treeView-D4JQ5SDB-Byi5cU2l.js → treeView-D4JQ5SDB-yWRFH4mR.js} +1 -1
- package/dist/web/assets/{treemap-SAJKECNS-DJ7_3_F8.js → treemap-SAJKECNS-q3FZ9UjJ.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-WPOLBNNX-DkTE13SV.js → usecaseDiagram-WPOLBNNX-Ch9QG7L1.js} +1 -1
- package/dist/web/assets/{vennDiagram-Q3Y3IDCW-C5G521q2.js → vennDiagram-Q3Y3IDCW-85m0XMhF.js} +1 -1
- package/dist/web/assets/{wardley-7MLQ67FV-PChC3W6T.js → wardley-7MLQ67FV-S2NRiIdM.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-IVAIDKWA-B9sJfj7x.js → wardleyDiagram-IVAIDKWA-q8ZLrvVG.js} +1 -1
- package/dist/web/assets/{xychartDiagram-4URNHDU4-CmuAuTkp.js → xychartDiagram-4URNHDU4-eSUy1iT7.js} +1 -1
- package/dist/web/index.html +4 -4
- package/package.json +4 -2
- package/templates/proposals/SKILL.md +14 -6
- package/templates/skill/SKILL.md +18 -0
- package/dist/web/assets/channel-B4Lj3Yy_.js +0 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-DA73lQLy.js +0 -1
- package/dist/web/assets/index-CFg9w5Ih.js +0 -63
- package/dist/web/assets/index-CT9Wzb6W.css +0 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-CeoYxgix.js +0 -8
package/README.md
CHANGED
|
@@ -1,58 +1,56 @@
|
|
|
1
|
-
# markode
|
|
1
|
+
# <img src="docs/assets/logo.svg" alt="" width="32" height="32" align="top"> markode
|
|
2
2
|
|
|
3
3
|
[](https://github.com/rafiqui1987/markode/actions/workflows/ci.yml)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
**
|
|
7
|
-
way.**
|
|
6
|
+
**Your project's Markdown, made for two readers: you and your AI agent.**
|
|
8
7
|
|
|
9
|
-
Run `markode` in any repository and
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
diffs stay clean and AI agents keep reading plain Markdown.
|
|
8
|
+
Run `markode` in any repository and every `.md` file (`README.md`, `CLAUDE.md`, `AGENTS.md`, `docs/`…)
|
|
9
|
+
opens in one editor that is also the preview. You read and edit documents, not syntax. The files stay
|
|
10
|
+
plain Markdown, saved exactly as written, so Git diffs stay clean and any agent reads them as they are.
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
On top of the viewer, and only if you want it, markode helps you and your agent work from the same
|
|
13
|
+
docs: short instructions that point instead of repeat, tasks that remember where you stopped, and
|
|
14
|
+
decisions you answer with a click instead of a wall of chat.
|
|
15
15
|
|
|
16
16
|
<picture>
|
|
17
17
|
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/screenshot-dark.png">
|
|
18
18
|
<img alt="markode editor: a repository with a front end and a back end, each with its own tasks; a phase listing tasks from both, a comment thread like in Word and a Mermaid diagram" src="docs/assets/screenshot-light.png">
|
|
19
19
|
</picture>
|
|
20
20
|
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
Requires Node.js 20 or newer. From the root of any project (monorepos included):
|
|
21
|
+
## The markode philosophy
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
AI agents made project docs important again, and they made them worse. `CLAUDE.md` files grow into
|
|
24
|
+
hundreds of lines of generic advice, folder listings the agent can read by itself, and the same
|
|
25
|
+
decision copied in three places. They cost tokens on every message, the agent still searches the whole
|
|
26
|
+
repository, and nobody keeps them up to date. Meanwhile the human, who has to review all of it, reads
|
|
27
|
+
raw Markdown in a split screen or not at all.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
markode is built on five ideas:
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
**1. Write less, point better.** The docs are a **map**, not an encyclopedia. Write only what the code
|
|
32
|
+
can't tell: decisions and why, hidden conventions, the state of the work. Each fact lives in one place
|
|
33
|
+
and everything else links to it. A doc is created when there is something real to put in it, never as
|
|
34
|
+
an empty template.
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
**2. The docs are the memory, not the chat.** Work lives in task files with a status and a next step.
|
|
37
|
+
Decisions live in the architecture docs. Tomorrow, a new session (or a teammate, or another agent) reads
|
|
38
|
+
the map, finds what is in progress and picks up where you stopped, without you explaining it again.
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
**3. One plain file, two ways to read it.** You see rendered tables, diagrams and checklists, and you
|
|
41
|
+
comment like in Word. The agent sees plain Markdown and HTML comments, invisible on GitHub. Nothing is
|
|
42
|
+
converted, nothing is locked in a database: delete markode tomorrow and every file still works.
|
|
40
43
|
|
|
41
|
-
**
|
|
44
|
+
**4. Talk through the docs.** When a question has options, the agent writes a proposal with diagrams
|
|
45
|
+
and you answer by ticking and commenting. Your comments and edits reach the agent while it works. The
|
|
46
|
+
decision ends up in the docs it changes, not lost in a conversation.
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
**5. Only what you ask for, for any agent.** The viewer writes nothing to your project. Everything
|
|
49
|
+
else is a module you turn on or off, and turning it off removes exactly what markode added. It works
|
|
50
|
+
with Claude Code, Codex, Cursor, Gemini, Copilot and any agent that reads `CLAUDE.md`, `AGENTS.md` or
|
|
51
|
+
skills.
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
of the work. A doc is created when there is something real to put in it.
|
|
50
|
-
- **A map, not an encyclopedia.** The main doc says where things are, not what they say. Each fact
|
|
51
|
-
lives in one place; everything else links to it.
|
|
52
|
-
- **Memory between sessions.** The work lives in task files with a status and a next step, not in a
|
|
53
|
-
chat history. Tomorrow, a new session (or a teammate) picks up where you stopped.
|
|
54
|
-
- **Shaped like your repository.** A single app, a monorepo or a folder of repositories each get the
|
|
55
|
-
structure they need, and the setup asks only what matters for yours.
|
|
53
|
+
What it looks like in a repository with a front end and a back end:
|
|
56
54
|
|
|
57
55
|
```tree
|
|
58
56
|
CLAUDE.md # the map: projects, where their docs live, how to start a session
|
|
@@ -72,26 +70,82 @@ explaining it all again.
|
|
|
72
70
|
|
|
73
71
|
markode can't force an agent to follow the map, but it makes the right path the shortest one.
|
|
74
72
|
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
Requires Node.js 20 or newer. From the root of any project (monorepos included):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npx @rafiqui987/markode
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The editor opens at `http://localhost:4319` (it only listens on `127.0.0.1`). The very first time,
|
|
82
|
+
markode asks a single question: what to install besides the viewer.
|
|
83
|
+
|
|
84
|
+
| Choice | What you get |
|
|
85
|
+
|---|---|
|
|
86
|
+
| **Viewer only** | See and edit every `.md` file. Nothing is written to the project. |
|
|
87
|
+
| **Viewer + AI agent** (recommended) | The viewer, plus everything your agent needs to work with these docs: its skill, working rules, proposals, comments, live changes and translations. |
|
|
88
|
+
| **Complete** | All of the above, plus the dashboard and a docs structure for vision, architecture, phases and tasks. |
|
|
89
|
+
| **Choose the modules** | Pick each module from the list below. |
|
|
90
|
+
|
|
91
|
+
Your answer becomes the default for new projects (`~/.markode/defaults.json`), so they don't ask again;
|
|
92
|
+
change it with `markode setup`. Everything else is detected: the main doc (`CLAUDE.md`, `AGENTS.md`
|
|
93
|
+
or both), the agents the project uses, the language its docs are written in, the projects of a
|
|
94
|
+
monorepo, and an existing OpenSpec or Spec Kit setup.
|
|
95
|
+
|
|
96
|
+
### Modules
|
|
97
|
+
|
|
98
|
+
Turn any of them on or off later in **Settings → Features** (or `markode features <module> on|off`).
|
|
99
|
+
Turning one off removes only what markode added; your docs, tasks, proposals and comments stay.
|
|
100
|
+
|
|
101
|
+
| Module | What it does | What it writes |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| **AI agent** | Teaches your agent how to work with these docs, and lets you comment on any text for it. | The `markode` skill in `.claude/skills/` and/or `.agents/skills/`, a "Working rules" section in the main doc with the source language |
|
|
104
|
+
| **Working rules** | Rules the agent follows in this project, chosen in the Rules tab. Needs the AI agent. | Inside the "Working rules" section |
|
|
105
|
+
| **Proposals** | The agent answers big questions with a doc you answer by ticking options and commenting. Needs the AI agent. | The `markode-proposals` skill, a "Proposals" section in the main doc |
|
|
106
|
+
| **Live changes** | Claude Code hears about your edits and comments while it works. Needs the AI agent. | Personal hooks in `.claude/settings.local.json` |
|
|
107
|
+
| **Translations** | Read and edit the docs in your language; the agent translates them. Needs the AI agent. | Only `.markode/` (personal) |
|
|
108
|
+
| **Dashboard and tasks** | A Dashboard tab with docs, proposals, phases and tasks; with the AI agent, also the structure for them (the markode method). | `docs/`, the `markode-*` method skills, a "Workflow" section in the main doc |
|
|
109
|
+
| **Skills** | A tab to browse and edit your agents' skills and add them to the project. | Nothing |
|
|
110
|
+
| **Hide in VS Code** | Hides `.markode/` from the VS Code explorer. | `.vscode/settings.json` |
|
|
111
|
+
|
|
112
|
+
markode keeps its own state in `.markode/`, which ignores itself in git (`.markode/.gitignore`), so
|
|
113
|
+
your `.gitignore` is never touched. Sections it writes in your main doc sit between markers like
|
|
114
|
+
`<!-- markode:rules:start -->` and `<!-- markode:rules:end -->`; the rest of the file is yours.
|
|
115
|
+
|
|
75
116
|
## What it does
|
|
76
117
|
|
|
118
|
+

|
|
119
|
+
|
|
77
120
|
### 1. Every Markdown file of the project, in one place
|
|
78
121
|
|
|
79
122
|
A file tree with every `.md` in the folder where you run it, folders first. Search, expand or collapse
|
|
80
123
|
all, create files and folders inline, hide what you don't need (`.markodeignore`) and delete from the
|
|
81
|
-
right-click menu. Resize the sidebar by dragging its edge, or hide it for more room.
|
|
124
|
+
right-click menu. Resize the sidebar by dragging its edge, or hide it for more room. Links between docs
|
|
125
|
+
work: click a relative `.md` link and it opens in markode.
|
|
126
|
+
|
|
127
|
+
### 2. Read the document, not the syntax
|
|
82
128
|
|
|
83
|
-
|
|
129
|
+
There is no "editor | preview" split. The **markode view** renders the document as it looks and lets
|
|
130
|
+
you write in it directly: headings, lists and quotes keep their marks out of the way, and the cursor
|
|
131
|
+
never lands inside them. Code blocks, tables, math and images show their Markdown only when you click
|
|
132
|
+
to edit them. One button switches the open file to the **Markdown view** (plain source) and back,
|
|
133
|
+
keeping your place; every file opens in the markode view.
|
|
84
134
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
135
|
+
The toolbar next to the breadcrumb has undo, redo, **discard** (back to how the file was when you
|
|
136
|
+
opened it), **find and replace** (`Ctrl+F`, `Ctrl+H`) and **copy** as Markdown or as formatted text
|
|
137
|
+
for an email or a chat.
|
|
88
138
|
|
|
89
139
|
### 3. Formatting without remembering syntax
|
|
90
140
|
|
|
91
141
|
- **`/` commands**: type `/` at the start of a line (or `Ctrl+Space` anywhere) for a menu of headings,
|
|
92
|
-
lists, checklists, tables, code blocks, diagrams, quotes, links
|
|
142
|
+
lists, checklists, single-choice lists, tables, code blocks, diagrams, quotes, links, frontmatter,
|
|
143
|
+
and comments and markers. Each option applies to the current line or to every selected line
|
|
144
|
+
(numbered lists count up). Pick with the number or the arrows; `0`, `←` or `Backspace` goes back.
|
|
93
145
|
- **Selection toolbar**: select text to copy it or turn it into bold, italic, strikethrough, code or a
|
|
94
|
-
link. Hover a button for its variants (`**`/`__`, `*`/`_`, `***`).
|
|
146
|
+
link. Hover a button for its variants (`**`/`__`, `*`/`_`, `***`). Formatting inside a link's text
|
|
147
|
+
keeps the link.
|
|
148
|
+
- **Links**: hover one to see its URL, copy it or edit its text and target; click to follow it.
|
|
95
149
|
|
|
96
150
|
### 4. Diagrams, tables and lists that are easy to work with
|
|
97
151
|
|
|
@@ -105,7 +159,19 @@ Undo, redo and **discard** (back to how the file was when you opened it) sit nex
|
|
|
105
159
|
- And more: KaTeX math (`$x^2$`, `$$…$$`), footnotes on hover, local and remote images, code blocks with
|
|
106
160
|
only their language label showing.
|
|
107
161
|
|
|
108
|
-
### 5.
|
|
162
|
+
### 5. Notes for the agent, invisible on GitHub
|
|
163
|
+
|
|
164
|
+
HTML comments are how a Markdown file talks to an agent without showing up for readers. markode makes
|
|
165
|
+
them visible and editable without the clutter (from the `/` menu, "Comments and markers"):
|
|
166
|
+
|
|
167
|
+
| You write | markode shows | Use it for |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| `<!-- any text -->` | a small icon; the text on hover | a hidden note for the agent or your future self |
|
|
170
|
+
| `<!-- region:auth:start -->` … `<!-- region:auth:end -->` | a bracket with the region's name | a section the agent should treat as one unit (renaming the start renames the end) |
|
|
171
|
+
| `<!-- tag:draft -->` | a tag chip | a marker the agent or a script can look for |
|
|
172
|
+
| `<!-- comment by Ana, …: … -->` | a comment thread, like in Word | a discussion on a piece of text (with the AI agent module) |
|
|
173
|
+
|
|
174
|
+
### 6. Work in your language
|
|
109
175
|
|
|
110
176
|
Most AI agents, and most teams, work best with docs in English. If English isn't easy for you, you
|
|
111
177
|
don't have to choose:
|
|
@@ -115,23 +181,23 @@ don't have to choose:
|
|
|
115
181
|
Dutch…). Then ask your agent for **`/markode translate`** (markode has a button to copy it), and
|
|
116
182
|
markode shows **every doc in that language**. Read the architecture, tick tasks, write notes and fix
|
|
117
183
|
a rule, all in your language.
|
|
118
|
-
- The files in the repository **stay in one source language
|
|
119
|
-
the rest of the team keep reading one consistent version.
|
|
184
|
+
- The files in the repository **stay in one source language**, detected from your docs on setup, so
|
|
185
|
+
the agent and the rest of the team keep reading one consistent version.
|
|
120
186
|
- Your edits are kept as a translation until you ask for `/markode translate` again. Before changing
|
|
121
187
|
a source file, the agent lists what would change and applies only what you approve. The top bar
|
|
122
188
|
shows how many docs are behind, and copies the command when clicked.
|
|
123
189
|
- Translating is always on purpose: it never happens as a side effect of other work.
|
|
124
|
-
- The menus
|
|
125
|
-
|
|
190
|
+
- The menus don't depend on the docs' language: pick English, Spanish, French, Portuguese, German or
|
|
191
|
+
Italian in **Settings → General**.
|
|
126
192
|
|
|
127
193
|
Example: you open `docs/tasks/T-004-login.md` in Spanish, add an acceptance criterion and tick two
|
|
128
194
|
others. After `/markode translate` and your OK, the English file has the new criterion and the ticks,
|
|
129
195
|
and the agent works from it.
|
|
130
196
|
|
|
131
|
-
###
|
|
197
|
+
### 7. A method to plan and follow the work
|
|
132
198
|
|
|
133
|
-
|
|
134
|
-
agent always know what is being built, how, and what comes next:
|
|
199
|
+
The **Dashboard and tasks** module sets up the **markode method**, a way of organizing the project so
|
|
200
|
+
that you and the agent always know what is being built, how, and what comes next:
|
|
135
201
|
|
|
136
202
|
```tree
|
|
137
203
|
CLAUDE.md # short: map, commands, how to start and close a session
|
|
@@ -152,24 +218,23 @@ flowchart LR
|
|
|
152
218
|
- **It starts small**: the setup creates only the task folder and its template. The agent creates the
|
|
153
219
|
vision, architecture and phase docs from templates (skill `markode-method`) when there is something
|
|
154
220
|
to write. A task's status lives only in its file: there is no index to keep in sync.
|
|
155
|
-
- **It knows what kind of project it is**,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
| Kind | Detected by |
|
|
159
|
-
|
|
160
|
-
| App | framework, `bin`, `Dockerfile`, `main.go`… |
|
|
161
|
-
| Library | `main`/`exports` in a public package, Cargo `[lib]` |
|
|
162
|
-
| Mobile | React Native, Flutter, `android/` + `ios/` |
|
|
163
|
-
| Data / ML | notebooks, `dvc.yaml`, `MLproject` |
|
|
164
|
-
| Infrastructure | Terraform, Pulumi, Helm, Kustomize |
|
|
165
|
-
| Microservices | several services + proto/OpenAPI or compose |
|
|
221
|
+
- **It knows what kind of project it is**, detected from its files, and writes only the guidance that
|
|
222
|
+
kind needs (`markode init --custom` asks instead):
|
|
223
|
+
|
|
224
|
+
| Kind | Detected by | Its docs |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| App | framework, `bin`, `Dockerfile`, `main.go`… | vision, architecture, phases |
|
|
227
|
+
| Library | `main`/`exports` in a public package, Cargo `[lib]` | public API and versioning, changelog |
|
|
228
|
+
| Mobile | React Native, Flutter, `android/` + `ios/` | releases and stores |
|
|
229
|
+
| Data / ML | notebooks, `dvc.yaml`, `MLproject` | datasets, experiment log |
|
|
230
|
+
| Infrastructure | Terraform, Pulumi, Helm, Kustomize | runbooks |
|
|
231
|
+
| Microservices | several services + proto/OpenAPI or compose | contracts as shared architecture |
|
|
166
232
|
|
|
167
233
|
It also recognizes monorepos with workspaces, a front end and a back end without workspaces, and
|
|
168
|
-
folders of repositories; and if the project already has docs, it
|
|
169
|
-
|
|
234
|
+
folders of repositories; and if the project already has docs, it points the agent to them instead
|
|
235
|
+
of creating new ones.
|
|
170
236
|
- **The main doc stays short** and points to `docs/`. If `CLAUDE.md` or `AGENTS.md` already exist,
|
|
171
237
|
they are not rewritten: markode adds a "Workflow" section with the map and the session routine.
|
|
172
|
-
- **Each fact lives in one place**: decisions in `architecture/`, progress in the task files.
|
|
173
238
|
- **Sessions pick up where they stopped**: the agent looks for tasks `in-progress`, reads their "Next
|
|
174
239
|
step" and tells you where you left off. `/markode-status` sums up what is in progress, blocked and
|
|
175
240
|
pending, per project; `/markode-new-task` creates a task in the right place; and
|
|
@@ -179,17 +244,16 @@ flowchart LR
|
|
|
179
244
|
proposals and, with its first decision, a `docs/ARCHITECTURE.md`. The root main doc is the
|
|
180
245
|
overview: a table of the projects, what each one is and where its docs live. The root `docs/` holds
|
|
181
246
|
vision, phases and work across projects (`CORE-001`). The agent reads only the project it is
|
|
182
|
-
working on.
|
|
183
|
-
block pointing to its docs.
|
|
247
|
+
working on.
|
|
184
248
|
- **Every agent finds the instructions**: Claude Code reads `CLAUDE.md`; Codex, Cursor, Gemini and
|
|
185
249
|
others read `AGENTS.md`. Where a folder has only one, markode offers the other, pointing to it (a
|
|
186
|
-
one-line `CLAUDE.md` with `@AGENTS.md`, or an `AGENTS.md` that sends agents to `CLAUDE.md`) in the
|
|
187
|
-
Dashboard and
|
|
188
|
-
`CLAUDE.md` one. Nothing is copied; `markode link --skip` stops the offer.
|
|
250
|
+
one-line `CLAUDE.md` with `@AGENTS.md`, or an `AGENTS.md` that sends agents to `CLAUDE.md`), in the
|
|
251
|
+
Dashboard and with `markode link`. Nothing is copied; `markode link --skip` stops the offer.
|
|
189
252
|
- **The Dashboard** shows each phase with its progress and tasks, and a board of what is in progress,
|
|
190
253
|
blocked and pending.
|
|
191
254
|
|
|
192
|
-
**Prefer spec-driven development?**
|
|
255
|
+
**Prefer spec-driven development?** Projects that already use one of these are detected, and the
|
|
256
|
+
Dashboard follows them; `markode init --custom` can install them for you:
|
|
193
257
|
|
|
194
258
|
| Option | What you get |
|
|
195
259
|
|---|---|
|
|
@@ -198,10 +262,9 @@ flowchart LR
|
|
|
198
262
|
|
|
199
263
|
markode runs their official installer, which also adds their commands to your agent (`/opsx:*`,
|
|
200
264
|
`/speckit-*`). If it can't (Spec Kit needs [uv](https://docs.astral.sh/uv/)), it creates a compatible
|
|
201
|
-
structure with a guide on how to add them later.
|
|
202
|
-
shown as they are. Choose **None** and markode adds no structure or workflow at all.
|
|
265
|
+
structure with a guide on how to add them later.
|
|
203
266
|
|
|
204
|
-
###
|
|
267
|
+
### 8. Proposals and comments: answer the agent with clicks
|
|
205
268
|
|
|
206
269
|
When an answer would be long or has options to choose from (or when you ask for one), the agent writes
|
|
207
270
|
a **proposal** instead of a long chat message: options with small ASCII or Mermaid diagrams, choices to
|
|
@@ -232,38 +295,66 @@ tick, open questions, and the docs the decision will change. You answer in marko
|
|
|
232
295
|
<!-- reply by AI, 2026-10-22: Two instances minimum; added to the architecture. -->
|
|
233
296
|
```
|
|
234
297
|
|
|
235
|
-
- **Send your answer**: the
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
298
|
+
- **Send your answer**: the agent is waiting on it in the background (`markode wait`) and continues by
|
|
299
|
+
itself; without an open session, the button copies a message to paste in your chat. The agent
|
|
300
|
+
replies to your comments and updates every doc that depends on the decision (tasks, phases,
|
|
301
|
+
architecture…).
|
|
302
|
+
- **Then it is archived**: the decision lives in those docs, and the proposal moves to an `applied/`
|
|
303
|
+
folder next to it, hidden in markode (shown with "show ignored"), left out of the dashboard, checks
|
|
304
|
+
and translations, and never read by the agent unless you ask about it.
|
|
239
305
|
- In a monorepo, proposals are organized **by project and topic** (`apps/web/docs/proposals/auth/…`);
|
|
240
306
|
in a big single project they can be organized by topic instead of one folder.
|
|
241
307
|
|
|
242
|
-
|
|
308
|
+
### 9. Your comments reach the agent while it works
|
|
309
|
+
|
|
310
|
+
You don't have to stop the agent to tell it something. Keep editing and commenting in markode: the
|
|
311
|
+
agent learns what changed (the **Live changes** module does it after every step in Claude Code; other
|
|
312
|
+
agents check as their skill tells them):
|
|
313
|
+
|
|
314
|
+
- a doc you edited, and which section: the agent re-reads it before working on that part;
|
|
315
|
+
- a comment on what it is working on: it replies below it and applies it;
|
|
316
|
+
- a comment on anything else: it asks you in one line whether to take it now.
|
|
243
317
|
|
|
244
|
-
###
|
|
318
|
+
### 10. Your AI agent's skills, and which ones this project really has
|
|
245
319
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
320
|
+
Skills teach an agent how to do a job: deploy, review a pull request, write a changelog. They pile up
|
|
321
|
+
in many places: your own for Claude Code (`~/.claude/skills`), for Codex, Gemini, Copilot or Cursor,
|
|
322
|
+
the shared `~/.agents/skills`, and each project's `.claude/skills/` or `.agents/skills/`. It is hard to
|
|
323
|
+
know what an agent can actually use in a given project, and copying skills around "just in case"
|
|
324
|
+
duplicates them, lets copies go stale, and costs context in every session.
|
|
325
|
+
|
|
326
|
+
The **Skills** tab lists every global skill you have ([Agent Skills](https://agentskills.io) format)
|
|
327
|
+
and tells you, for the agents this project uses, where each one stands:
|
|
328
|
+
|
|
329
|
+
| Status | What it means | What to do |
|
|
330
|
+
|---|---|---|
|
|
331
|
+
| **Active for Claude (global)** | Claude Code already uses it in every project. | Nothing. **Share with the team** copies it into the repository only if your teammates (or CI) need it too. |
|
|
332
|
+
| **Not visible to Claude** | It belongs to another agent (e.g. a Codex skill): Claude can't use it here. | **Use with Claude** copies it into `.claude/skills/`. Review it after: it may mention that agent's commands. |
|
|
333
|
+
| **In the project** | Copied into this project: every clone has it. | Nothing. |
|
|
334
|
+
| **Global and in the project** | Two copies. On your machine Claude Code runs your global one (a personal skill wins over a project skill with the same name); the team gets the project one. | Keep the project copy only to share it. |
|
|
335
|
+
| **Project copy differs** | The project's `SKILL.md` is not the same as your global one. | Click to update it from the global one, or keep the project's version on purpose. |
|
|
251
336
|
|
|
252
|
-
|
|
337
|
+
You can also tag skills to group them (tags live in `~/.markode/skills.json`, never in the skill),
|
|
338
|
+
read and edit a `SKILL.md` in place, and see problems that would stop an agent from loading it (a
|
|
339
|
+
missing description, a name that doesn't match its folder…).
|
|
340
|
+
|
|
341
|
+
### 11. Also included
|
|
253
342
|
|
|
254
343
|
- **Changes**: Git diff of your Markdown, grouped by folder and section.
|
|
255
344
|
- **Rules**: your library of reusable rules, written into `CLAUDE.md` or `AGENTS.md` where you apply
|
|
256
345
|
them. It starts with common ones for AI agents (ask before committing, verify before saying it's done,
|
|
257
|
-
minimal changes, protect secrets…); edit them and add your own.
|
|
258
|
-
|
|
259
|
-
- **Settings**, by section: General (interface language, theme),
|
|
260
|
-
margins, line width, wrapping)
|
|
346
|
+
minimal changes, protect secrets…); edit them and add your own. None is applied unless you choose
|
|
347
|
+
it. The library lives in `~/.markode/rules/`.
|
|
348
|
+
- **Settings**, by section: General (interface language, theme), Features (the modules, with what each
|
|
349
|
+
one does and writes), Editor (font, size, line spacing, margins, line width, wrapping) and Document
|
|
350
|
+
languages.
|
|
261
351
|
|
|
262
352
|
## Keyboard shortcuts
|
|
263
353
|
|
|
264
354
|
| Keys | Action |
|
|
265
355
|
|---|---|
|
|
266
356
|
| `/` at the start of a line, `Ctrl+Space` | Insert menu |
|
|
357
|
+
| `0`, `←`, `Backspace` in the menu | Back to the previous level |
|
|
267
358
|
| `Ctrl+Enter` | Tick or untick the task on the current line |
|
|
268
359
|
| `Alt+H` | After pasting a table from a spreadsheet: toggle the header row |
|
|
269
360
|
| `Ctrl+Z` / `Ctrl+Y` | Undo / redo |
|
|
@@ -276,46 +367,69 @@ skill.
|
|
|
276
367
|
|
|
277
368
|
```bash
|
|
278
369
|
markode # set up the project if needed, then open the editor
|
|
279
|
-
markode init # run the setup again (with your defaults, if you saved them)
|
|
280
|
-
markode init --custom # set up this project with its own answers
|
|
281
|
-
markode setup # change your defaults, or switch to asking in each project
|
|
282
|
-
markode -D # first run: don't save defaults, ask in each project
|
|
283
370
|
markode serve # open the editor without the setup
|
|
284
371
|
markode serve --port 5000 --no-open
|
|
372
|
+
markode init # run the setup again: only adds modules (your defaults, if saved)
|
|
373
|
+
markode init --profile full # no questions: viewer, agent or full
|
|
374
|
+
markode init --yes # no questions: your defaults, or viewer + AI agent
|
|
375
|
+
markode init --custom # choose each module and answer every question for this project
|
|
376
|
+
markode setup # change your defaults, or switch to asking in each project
|
|
377
|
+
markode setup --custom # also choose the main doc, language, rules and monorepo layout
|
|
378
|
+
markode -D # first run: don't save your choice as the default
|
|
379
|
+
markode features # which modules are on, with what each one does
|
|
380
|
+
markode features live off # turn a module on or off (same as Settings → Features)
|
|
285
381
|
markode translate # choose languages to review the docs in (also: markode --translate)
|
|
286
382
|
markode link # only CLAUDE.md or only AGENTS.md? add the other one, pointing to it
|
|
287
383
|
markode -v # version
|
|
288
384
|
```
|
|
289
385
|
|
|
290
386
|
To keep it installed: `npm install -g @rafiqui987/markode` (or `pnpm add -g @rafiqui987/markode`).
|
|
387
|
+
Installing it also makes the Claude Code hooks faster than running through `npx`.
|
|
291
388
|
|
|
292
389
|
## For AI agents
|
|
293
390
|
|
|
294
|
-
|
|
295
|
-
|
|
391
|
+
The AI agent module installs the `markode` skill where the project's agents read skills
|
|
392
|
+
(`.claude/skills/` for Claude Code, `.agents/skills/` for Codex, Copilot, Gemini and others). It tells
|
|
393
|
+
the agent how to write Markdown that markode presents well, and gives it two commands:
|
|
296
394
|
|
|
297
395
|
| Command | What the agent does | When |
|
|
298
396
|
|---|---|---|
|
|
299
397
|
| `/markode sync` | Keeps the docs consistent: applies answered proposals, ticks phases from their tasks, checks the projects table and broken links (`markode check`) | Start and end of a session, after editing docs |
|
|
300
398
|
| `/markode translate` | Translates what is behind; asks before changing any source file | Only when you ask |
|
|
301
399
|
|
|
302
|
-
|
|
400
|
+
markode refreshes every skill and section it installed when the editor starts, so updating markode is
|
|
401
|
+
enough. In the main doc it writes only between its markers:
|
|
303
402
|
|
|
304
|
-
- the
|
|
305
|
-
- how the project plans its work (the markode method, OpenSpec or Spec Kit)
|
|
306
|
-
|
|
307
|
-
also installs the `markode-new-task` and `markode-close-session` skills.
|
|
308
|
-
- with proposals on, how the agent writes proposals and answers comments (skill
|
|
309
|
-
`markode-proposals`), between `<!-- markode:proposals:start -->` and `<!-- markode:proposals:end -->`.
|
|
403
|
+
- `markode:rules`: the source language and the working rules you picked;
|
|
404
|
+
- `markode:workflow`: how the project plans its work (the markode method, OpenSpec or Spec Kit);
|
|
405
|
+
- `markode:proposals`: how the agent writes proposals and answers comments.
|
|
310
406
|
|
|
311
407
|
When the agent writes a proposal, it runs `markode wait <proposal>` in the background: it waits
|
|
312
|
-
without using tokens until you press "Done, send my answer"
|
|
313
|
-
|
|
314
|
-
|
|
408
|
+
without using tokens until you press "Done, send my answer", then hands the agent your choices, open
|
|
409
|
+
questions and comments. If no session was open, the next one applies the answer first.
|
|
410
|
+
|
|
411
|
+
**Live changes.** markode logs what you save (the agent's own edits go straight to disk, so they never
|
|
412
|
+
count), and `markode changes` tells the agent what is new since it was last told. With the Live changes
|
|
413
|
+
module, in projects that use Claude Code, markode adds three hooks to `.claude/settings.local.json`
|
|
414
|
+
(personal: each teammate decides), silent while nothing changes:
|
|
415
|
+
|
|
416
|
+
```json
|
|
417
|
+
{
|
|
418
|
+
"hooks": {
|
|
419
|
+
"SessionStart": [{ "hooks": [{ "type": "command", "command": "markode changes --start" }] }],
|
|
420
|
+
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "markode changes --hook UserPromptSubmit" }] }],
|
|
421
|
+
"PostToolUse": [{ "hooks": [{ "type": "command", "command": "markode changes --hook PostToolUse" }] }]
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
Without a global install the command is `npx -y --prefer-offline @rafiqui987/markode`.
|
|
315
427
|
|
|
316
428
|
```bash
|
|
317
429
|
markode check [--json] # what /markode sync fixes
|
|
318
430
|
markode wait <proposal.md> # wait for the user's answer, then print it
|
|
431
|
+
markode changes [--json] # the user's edits and comments since last told
|
|
432
|
+
markode changes --start # a new session: what happened before is old news
|
|
319
433
|
markode translate --status [--json] # translations + files not in the source language
|
|
320
434
|
markode translate --mark [--lang xx] <path...>|--all # record translations as in sync
|
|
321
435
|
markode translate --keep <path...> # keep files in their current language
|
|
@@ -323,13 +437,18 @@ markode translate --keep <path...> # keep files in their curr
|
|
|
323
437
|
|
|
324
438
|
## Uninstall
|
|
325
439
|
|
|
440
|
+
From a project: turn the modules off (`markode features agent off`, `markode features dashboard off`,
|
|
441
|
+
`markode features vscode off`) and delete `.markode/`. That removes the skills, hooks and `markode:*`
|
|
442
|
+
sections it added; your docs stay. Projects set up before 0.3 may also have a `.markode/` line in
|
|
443
|
+
`.gitignore`.
|
|
444
|
+
|
|
445
|
+
The global install:
|
|
446
|
+
|
|
326
447
|
```bash
|
|
327
|
-
npm uninstall -g markode # or: pnpm remove -g markode
|
|
448
|
+
npm uninstall -g @rafiqui987/markode # or: pnpm remove -g @rafiqui987/markode
|
|
328
449
|
```
|
|
329
450
|
|
|
330
|
-
|
|
331
|
-
`.gitignore`, and the `markode:rules`, `markode:workflow` and `markode:proposals` blocks in your main doc (keep the text
|
|
332
|
-
inside if you still want it). Editor settings, rule presets and skill tags live in `~/.markode`.
|
|
451
|
+
Editor settings, your defaults, rule presets and skill tags live in `~/.markode`.
|
|
333
452
|
|
|
334
453
|
## Development
|
|
335
454
|
|
|
@@ -340,6 +459,18 @@ pnpm build # web → dist/web, CLI → dist/cli.js
|
|
|
340
459
|
pnpm typecheck
|
|
341
460
|
```
|
|
342
461
|
|
|
462
|
+
**Try the setup as a new user** with `pnpm sandbox` (after `pnpm build`): it copies a sample project
|
|
463
|
+
to a temporary folder, runs markode there with an empty `~/.markode` (so you see the first-run
|
|
464
|
+
question), and when it exits lists every file markode created or changed.
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
pnpm sandbox # sample "single": ask, install and open the editor
|
|
468
|
+
pnpm sandbox monorepo init # only the setup, then the list of files
|
|
469
|
+
pnpm sandbox agents init --profile full # a project with only AGENTS.md, no questions
|
|
470
|
+
pnpm sandbox es --keep-home init # share one sandbox ~/.markode: the second project doesn't ask
|
|
471
|
+
pnpm sandbox list # samples: empty, single, es, agents, claude, monorepo, openspec
|
|
472
|
+
```
|
|
473
|
+
|
|
343
474
|
To try your local build in other projects, run `pnpm build && pnpm add -g "link:$PWD"`.
|
|
344
475
|
|
|
345
476
|
See [docs/SPEC.md](docs/SPEC.md) for the specification and [CONTRIBUTING.md](CONTRIBUTING.md) to
|