@younndai/lyt-skills 0.9.8 → 0.9.9
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/package.json +2 -2
- package/skills/lyt-search/SKILL.md +43 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@younndai/lyt-skills",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"description": "Lyt harness skills — 16 skills (/lyt-plan, /lyt-progress, /lyt-result, /lyt-retro, /lyt-insight, /lyt-handoff, /lyt-decision, /lyt-pattern, /lyt-capture, /lyt-recall, /lyt-pod, /lyt-mesh-explore, /lyt-primer-context, /lyt-search, /lyt-sync, /lyt-alias) symlinked tri-runtime into ~/.claude/skills/, ~/.codex/skills/, ~/.agents/skills/. Composed into the `lyt skills install` and `lyt skills list` meta-CLI verbs.",
|
|
5
5
|
"homepage": "https://linkyourthink.com",
|
|
6
6
|
"repository": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"prepublishOnly": "node ../../scripts/check-no-vendored-deps.mjs --root ../.. && node ../../scripts/public-release/scan-tarball.mjs lyt-skills"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@younndai/lyt-vault": "^0.9.
|
|
52
|
+
"@younndai/lyt-vault": "^0.9.9",
|
|
53
53
|
"commander": "^12.1.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
@@ -128,6 +128,48 @@ Show each result as `[<confidence>] <vault>/<figment_path> — <snippet>`. Trunc
|
|
|
128
128
|
|
|
129
129
|
On **empty results**: surface _"No matches for `"<query>"` across <scope>."_ and offer scope-widening hints (`--mesh` → federation; `--vault` → `--mesh`). If a vault that should contain the figment still returns nothing, its FTS index may be stale — suggest rebuilding it with `lyt vault rebuild-index <name>` (or `lyt reindex` across the pod), then re-running the search.
|
|
130
130
|
|
|
131
|
+
## Phase 5 — Concept-search discovery nudge (only when `trace.nudge.eligible` is true)
|
|
132
|
+
|
|
133
|
+
The `--json` output may carry a `trace.nudge` block. It is the signal for a one-time offer to enable **concept search** — finding notes by meaning, not just keywords. Read it; only voice the offer when it explicitly says to.
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
"trace": {
|
|
137
|
+
"nudge": {
|
|
138
|
+
"eligible": true,
|
|
139
|
+
"state": "not-yet-asked",
|
|
140
|
+
"reason": null,
|
|
141
|
+
"declines": 0,
|
|
142
|
+
"daysSince": null,
|
|
143
|
+
"searchesSince": 1
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
- **`eligible: true`** → voice the offer once (see below). A null `reason` confirms it.
|
|
149
|
+
- **`eligible: false`** → say nothing about it. The `reason` explains why (`model-present` = already set up; `disabled` = the user chose never to be asked; `auto-quiet` = declined enough times; `cadence` = asked recently). Never override an ineligible verdict.
|
|
150
|
+
- **`trace.nudge` absent** → nothing to do; proceed normally.
|
|
151
|
+
|
|
152
|
+
### Voicing the offer (only when eligible)
|
|
153
|
+
|
|
154
|
+
Relay it to the user in plain language, **framed as a benefit to them — never "to help improve Lyt"**:
|
|
155
|
+
|
|
156
|
+
> _"I can also search your notes by meaning, not just keywords. It needs a one-time local setup (nothing leaves your machine). Want me to set it up?"_
|
|
157
|
+
|
|
158
|
+
Then **capture an explicit yes or no** before doing anything else.
|
|
159
|
+
|
|
160
|
+
### Response-capture contract — map the reply to exactly one verb
|
|
161
|
+
|
|
162
|
+
| User reply | Do |
|
|
163
|
+
|---|---|
|
|
164
|
+
| **Yes** (set it up) | `lyt model fetch` — runs the one-time local setup and marks the offer resolved. |
|
|
165
|
+
| **No** (explicit decline) | `lyt model nudge --decline` — records ONE decline (three declines → auto-quiet). |
|
|
166
|
+
| **"Never ask again"** | `lyt model nudge --never` — turns the offer off permanently. |
|
|
167
|
+
| **Surfaced / bookkeeping only** | `lyt model nudge --asked` — records that the offer was shown (stamps the ask, resets the cadence counter) when you voiced it without yet capturing a yes/no. |
|
|
168
|
+
|
|
169
|
+
- **A non-response is NOT a decline.** If the user doesn't answer the offer, record nothing — do not run `nudge --decline`. Only an explicit "no" counts as a decline.
|
|
170
|
+
- **Inspect anytime** with `lyt model nudge --status` (read-only; prints the current offer-state).
|
|
171
|
+
- Honor a `disabled` / `auto-quiet` state — once the user has opted out, never re-raise the offer.
|
|
172
|
+
|
|
131
173
|
## Rules
|
|
132
174
|
|
|
133
175
|
- **MUST pass the user's query as a single quoted argv argument**, not template-interpolated into a shell command string. Filenames or queries containing shell metacharacters (`` ` ``, `$(...)`, `;`, `&&`) inside the query MUST be safely conveyed as argv.
|
|
@@ -139,6 +181,7 @@ On **empty results**: surface _"No matches for `"<query>"` across <scope>."_ and
|
|
|
139
181
|
- **MUST NOT re-interpret confidence tiers.** The CLI emits them as `0.95 / 0.90 / 0.70 / 0.50` per Tier 0/1/2/3 spec. Display verbatim; do not "smooth" or "round" or invent a derived score.
|
|
140
182
|
- **MUST NOT modify or write any vault file.** This is a read-only skill (`requires_writable_vault: false`). If the user wants results persisted to a Figment, run `/lyt-capture` separately on the formatted output.
|
|
141
183
|
- **MUST NOT widen scope without user signal.** If the user said "in my work vault", do not silently fall back to federation when the named vault is missing — surface the miss and stop.
|
|
184
|
+
- **MUST voice the concept-search offer ONLY when `trace.nudge.eligible` is true**, and MUST capture an explicit yes/no before acting. A non-response records nothing — never run `lyt model nudge --decline` on silence. Honor a `disabled` / `auto-quiet` state and never re-raise.
|
|
142
185
|
|
|
143
186
|
## Companion skills
|
|
144
187
|
|