@gmickel/gno 1.0.3 → 1.0.4

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.
@@ -0,0 +1,130 @@
1
+ # GNO — Agent Skill
2
+
3
+ Local-first semantic search for documents, notes, and knowledge bases,
4
+ packaged as a Claude Code / Codex / OpenCode / OpenClaw skill.
5
+
6
+ > **TL;DR** — this folder is a runnable agent skill. Drop it into any
7
+ > Claude Code, Codex, OpenCode, or OpenClaw workspace and the agent can
8
+ > index and search your local files through the `gno` CLI.
9
+
10
+ ## Prerequisites
11
+
12
+ You need the `gno` CLI installed locally. The skill drives it; it does
13
+ not ship the binary itself.
14
+
15
+ ```bash
16
+ # macOS / Linux
17
+ curl -fsSL https://gno.sh/install | bash
18
+
19
+ # npm / Bun
20
+ bun add -g @gmickel/gno # or: npm install -g @gmickel/gno
21
+ ```
22
+
23
+ Verify: `gno --version` should print `1.0.3` or later.
24
+
25
+ ## Install the skill
26
+
27
+ There are two ways to install, and which one you pick depends on where
28
+ you're starting from.
29
+
30
+ ### Option A — install from your local `gno` (recommended if you already have GNO)
31
+
32
+ If you already installed GNO, it ships this skill in-tree. One command
33
+ drops it into the right place for every supported agent, always in sync
34
+ with your installed GNO version:
35
+
36
+ ```bash
37
+ gno skill install --target claude # Claude Code (default)
38
+ gno skill install --target codex # OpenAI Codex CLI
39
+ gno skill install --target opencode # OpenCode
40
+ gno skill install --target openclaw # OpenClaw
41
+ gno skill install --target all # All four
42
+ ```
43
+
44
+ Scope is configurable:
45
+
46
+ ```bash
47
+ gno skill install --scope project # ./.claude/skills/gno (default)
48
+ gno skill install --scope user # ~/.claude/skills/gno
49
+ ```
50
+
51
+ Inspect or uninstall:
52
+
53
+ ```bash
54
+ gno skill show # preview what would be installed
55
+ gno skill paths # resolved installation paths
56
+ gno skill uninstall --target all # remove from all agents
57
+ ```
58
+
59
+ This path always gives you the skill that matches your GNO CLI — no
60
+ version drift.
61
+
62
+ ### Option B — install from ClawHub (recommended if you use OpenClaw)
63
+
64
+ ClawHub is the OpenClaw skill registry. Use this when you manage
65
+ skills centrally across multiple workspaces or when you don't have GNO
66
+ installed yet.
67
+
68
+ ```bash
69
+ openclaw skills install gno # installs @gmickel/gno
70
+ openclaw skills update gno # pull a newer version later
71
+ openclaw skills info gno # inspect what's installed
72
+ ```
73
+
74
+ You can also browse the skill at
75
+ <https://clawhub.ai/gmickel/gno> and download the folder manually.
76
+
77
+ ## What the skill teaches the agent
78
+
79
+ Once installed, the agent gains a single callable capability: run `gno`
80
+ commands from the workspace. The skill docs (see [SKILL.md](SKILL.md))
81
+ walk the model through:
82
+
83
+ - initialising a new index and adding collections
84
+ - keyword (`search`), vector (`vsearch`), hybrid (`query`) and
85
+ AI-answer (`ask`) search modes
86
+ - document retrieval (`get`, `multi-get`) including line ranges
87
+ - link graph traversal (`links`, `backlinks`, `similar`, `graph`)
88
+ - tagging, contexts, and per-collection embedding models
89
+ - publishing notes as gno.sh reader snapshots (`publish export`)
90
+ - MCP server setup for persistent agent access
91
+
92
+ The reference docs in this folder are discoverable by the agent via
93
+ progressive disclosure — the model only pulls them when it needs them:
94
+
95
+ - [SKILL.md](SKILL.md) — core instructions + frontmatter
96
+ - [cli-reference.md](cli-reference.md) — every CLI command, option and flag
97
+ - [mcp-reference.md](mcp-reference.md) — MCP tool and resource contract
98
+ - [examples.md](examples.md) — end-to-end usage patterns
99
+
100
+ ## Agent tooling contract
101
+
102
+ The skill requests two tools:
103
+
104
+ ```yaml
105
+ allowed-tools: Bash(gno:*) Read
106
+ ```
107
+
108
+ - **`Bash(gno:*)`** — the agent can invoke `gno <anything>` on the
109
+ host. All writes are explicit CLI calls; nothing runs implicitly.
110
+ - **`Read`** — the agent can open files the user has pointed at. No
111
+ filesystem writes come through the skill itself.
112
+
113
+ ## Versioning
114
+
115
+ The skill version is tracked separately from the GNO CLI version. When
116
+ the CLI ships a new feature worth teaching the model (new flag, new
117
+ subcommand, new sanitizer behaviour), the skill gets a point bump. See
118
+ the CHANGELOG entry on ClawHub or the `gno` repo's CHANGELOG for what
119
+ landed in each bump.
120
+
121
+ ## License
122
+
123
+ MIT-0 — use it freely, with or without attribution.
124
+
125
+ ## Links
126
+
127
+ - Source: <https://github.com/gmickel/gno>
128
+ - Hosted publishing: <https://gno.sh>
129
+ - OpenClaw docs: <https://docs.openclaw.ai>
130
+ - ClawHub listing: <https://clawhub.ai/gmickel/gno>
@@ -504,24 +504,51 @@ Export a note or collection as a gno.sh publish artifact JSON.
504
504
  gno publish export <target> [--out <path.json>] [options]
505
505
  ```
506
506
 
507
- | Option | Default | Description |
508
- | -------------- | ------- | ------------------------------------------------------------- |
509
- | `--out` | auto | Output path, defaults to `~/Downloads/<slug>-<YYYYMMDD>.json` |
510
- | `--visibility` | public | One of `public`, `secret-link`, `invite-only`, `encrypted` |
511
- | `--slug` | auto | Override the published route slug |
512
- | `--title` | auto | Override the exported title |
513
- | `--summary` | auto | Override the exported summary |
514
- | `--json` | false | Structured result output |
507
+ | Option | Default | Description |
508
+ | -------------- | ------- | -------------------------------------------------------------------------- |
509
+ | `--out` | auto | Output path, defaults to `~/Downloads/<slug>-<YYYYMMDD>.json` |
510
+ | `--visibility` | public | One of `public`, `secret-link`, `invite-only`, `encrypted` |
511
+ | `--slug` | auto | Override the published route slug |
512
+ | `--title` | auto | Override the exported title |
513
+ | `--summary` | auto | Override the exported summary |
514
+ | `--passphrase` | none | Required for `--visibility encrypted`; encrypts locally before upload |
515
+ | `--preview` | false | Print sanitized markdown + preprocessor report instead of writing artifact |
516
+ | `--json` | false | Structured result output |
515
517
 
516
518
  Examples:
517
519
 
518
520
  ```bash
519
521
  gno publish export work-docs --out ~/Downloads/work-docs.json
520
522
  gno publish export "gno://work-docs/runbooks/deploy.md" --out ~/Downloads/deploy.json
523
+
524
+ # Encrypted share — ciphertext produced locally before upload
525
+ gno publish export "gno://work-docs/offer-letter.md" \
526
+ --visibility encrypted --passphrase "correct horse battery staple"
527
+
528
+ # Inspect what the sanitizer strips before writing anything
529
+ gno publish export "gno://vault/my-note.md" --preview
521
530
  ```
522
531
 
523
532
  On success, upload the JSON file at `https://gno.sh/studio`.
524
533
 
534
+ **Obsidian pre-processor (v1.0.2+)**: before the artifact is written, the
535
+ export pipeline runs a sanitizer over each note's markdown. It:
536
+
537
+ - drops the navigation-sidebar idiom (`[[Hub]] | [[Related]]` immediately
538
+ under the frontmatter)
539
+ - strips any `[[_internal/...]]` references (privacy guard — the
540
+ `_internal/` convention is treated as never-publish)
541
+ - converts `[[Target|Alias]]` to the alias text, and `[[Target]]` to the
542
+ tail segment of the target
543
+ - drops `![[image.png]]` embeds (attachments are not bundled yet) with a
544
+ warning so the author can migrate to `![alt](url)` or wait for bundling
545
+ - refuses to export a note whose frontmatter contains `publish: false`
546
+ (single-note export errors; collection export silently skips)
547
+
548
+ Every sanitizer decision surfaces in the CLI output as a "Preprocessor
549
+ notes" section, on the `--json` response under `warnings`, and on
550
+ `--preview` as a structured report — so nothing is silently lost.
551
+
525
552
  ## Skill Management
526
553
 
527
554
  ### gno skill install
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmickel/gno",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Local semantic search for your documents. Index Markdown, PDF, and Office files with hybrid BM25 + vector search.",
5
5
  "keywords": [
6
6
  "embeddings",