@litfamily/litgrok 1.0.1 → 1.0.3
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/.grok/hooks/session-start.mjs +0 -16
- package/.grok/hooks/stop.mjs +18 -26
- package/.grok/skills/litgoal/SKILL.md +1 -1
- package/.grok/skills/litgrok/SKILL.md +1 -1
- package/.grok/skills/litwork/SKILL.md +1 -1
- package/.grok-plugin/plugin.json +61 -0
- package/CHANGELOG.md +15 -0
- package/README.md +13 -13
- package/README_ko-KR.md +13 -13
- package/bin/litgrok.mjs +33 -14
- package/docs/assets/cover-motion.webp +0 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/privacy.md +1 -3
- package/docs/reference.md +8 -26
- package/docs/reference_ko-KR.md +8 -25
- package/package.json +4 -1
- package/plugin.json +1 -1
- package/.grok/skills/skill-observer/SKILL.md +0 -78
- package/.grok/skills/skill-observer/references/review-contract.md +0 -77
- package/.grok/skills/skill-observer/scripts/curator.mjs +0 -121
- package/.grok/skills/skill-observer/scripts/review.mjs +0 -347
- package/.grok/skills/skill-observer/scripts/skill-loop.mjs +0 -2087
- package/.grok/skills/skill-observer/scripts/validate-skills.mjs +0 -83
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { pendingReviewState } from '../skills/skill-observer/scripts/skill-loop.mjs';
|
|
4
3
|
import { renderMark } from './lit-mark.mjs';
|
|
5
4
|
import { claimSessionIgnition } from './record-passive-event.mjs';
|
|
6
5
|
|
|
@@ -20,18 +19,3 @@ try {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
process.stdout.write('LitGrok payload present: skills, project rules, hooks, and the npx installer.\n');
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
const sessionId = process.env.GROK_SESSION_ID || event.sessionId;
|
|
26
|
-
const workspaceRoot = process.env.GROK_WORKSPACE_ROOT || event.workspaceRoot;
|
|
27
|
-
if (!process.exitCode && sessionId && workspaceRoot && event.sessionId === sessionId && event.workspaceRoot === workspaceRoot) {
|
|
28
|
-
const state = pendingReviewState({
|
|
29
|
-
cwd: workspaceRoot,
|
|
30
|
-
env: { ...process.env, LITGROK_WORKSPACE_ROOT: workspaceRoot },
|
|
31
|
-
sessionId,
|
|
32
|
-
});
|
|
33
|
-
if (state.pending) process.stdout.write(`LitGrok: pending review for session ${sessionId} — run /skill-observer review\n`);
|
|
34
|
-
}
|
|
35
|
-
} catch {
|
|
36
|
-
// The installed-payload banner is still useful when optional event state is unavailable.
|
|
37
|
-
}
|
package/.grok/hooks/stop.mjs
CHANGED
|
@@ -2,35 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
// No completion-summary field is documented, so this records only the documented turn-end event and identity.
|
|
4
4
|
import { appendSessionRecord, recordPassiveEvent } from './record-passive-event.mjs';
|
|
5
|
-
import { recordTurnEnded } from '../skills/skill-observer/scripts/skill-loop.mjs';
|
|
6
5
|
import { PLAN_GATE_SIGNAL, evaluatePlanGate } from './plan-gate.mjs';
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const observed = await recordPassiveEvent('Stop');
|
|
8
|
+
if (observed) {
|
|
9
|
+
// Plan gate: a planning turn must persist plans/<slug>.md; evaluated after the ledger record so a block is counted.
|
|
10
|
+
let gate;
|
|
11
|
+
try {
|
|
12
|
+
gate = evaluatePlanGate({
|
|
13
|
+
event: observed.event,
|
|
14
|
+
workspaceRoot: observed.environment.realWorkspaceRoot,
|
|
14
15
|
sessionId: observed.environment.sessionId,
|
|
16
|
+
ledgerFile: observed.ledgerFile,
|
|
15
17
|
});
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} catch (error) {
|
|
26
|
-
process.stderr.write(`LitGrok plan gate: PLAN_GATE_FAILED ${error instanceof Error ? error.message : String(error)}\n`);
|
|
27
|
-
gate = { block: false };
|
|
28
|
-
}
|
|
29
|
-
if (gate.block) {
|
|
30
|
-
appendSessionRecord(observed.ledgerFile, observed.record, { signal: PLAN_GATE_SIGNAL, reason: gate.reason });
|
|
31
|
-
process.stdout.write(`${JSON.stringify({ decision: 'block', reason: gate.reason })}\n`);
|
|
32
|
-
} else if (gate.warning) {
|
|
33
|
-
process.stderr.write(`${gate.warning}\n`);
|
|
34
|
-
}
|
|
18
|
+
} catch (error) {
|
|
19
|
+
process.stderr.write(`LitGrok plan gate: PLAN_GATE_FAILED ${error instanceof Error ? error.message : String(error)}\n`);
|
|
20
|
+
gate = { block: false };
|
|
21
|
+
}
|
|
22
|
+
if (gate.block) {
|
|
23
|
+
appendSessionRecord(observed.ledgerFile, observed.record, { signal: PLAN_GATE_SIGNAL, reason: gate.reason });
|
|
24
|
+
process.stdout.write(`${JSON.stringify({ decision: 'block', reason: gate.reason })}\n`);
|
|
25
|
+
} else if (gate.warning) {
|
|
26
|
+
process.stderr.write(`${gate.warning}\n`);
|
|
35
27
|
}
|
|
36
28
|
}
|
|
@@ -48,7 +48,7 @@ A useful objective answers:
|
|
|
48
48
|
|
|
49
49
|
Example:
|
|
50
50
|
|
|
51
|
-
/goal Make the release check pass in
|
|
51
|
+
/goal Make the release check pass in this package checkout without changing the package version; done when npm test and npm pack --dry-run --json --ignore-scripts both exit 0 and the pack list contains only the approved payload.
|
|
52
52
|
|
|
53
53
|
The example is a command for the operator to run. It is not an invocation performed by this skill.
|
|
54
54
|
|
|
@@ -22,7 +22,7 @@ reader_projection: shared_rule
|
|
|
22
22
|
|
|
23
23
|
LitGrok is a dependency-free package containing:
|
|
24
24
|
|
|
25
|
-
-
|
|
25
|
+
- 33 Grok-native skill folders under `.grok/skills/`, including their owned references;
|
|
26
26
|
- a root-level `plugin.json` manifest declaring the shipped skill, agent, and hook surfaces;
|
|
27
27
|
- 11 Grok-native agent definitions under `.grok/agents/`;
|
|
28
28
|
- one project rule under `.grok/rules/`;
|
|
@@ -88,7 +88,7 @@ A working note can use this compact shape:
|
|
|
88
88
|
|
|
89
89
|
Use the ledger only for chronology and identity checks. Confirm that the record's schema, session id, workspace root, hook name, and event name match the session being reviewed. Treat tool input hashes as identifiers, not as recoverable command text. A Stop record means a turn ended; it is not a completion receipt. A SubagentStop record means a boundary was observed; inspect the agent's own artifact before classifying its result.
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
Older LitGrok versions may have left skill-review state under .grok/litgrok. Current hooks leave those files untouched; do not present them as a work ledger.
|
|
92
92
|
|
|
93
93
|
## Native features and explicit limits
|
|
94
94
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "litgrok",
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"description": "Grok Build skills, project rules, and bounded lifecycle hooks for evidence-first lit work.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "LitGrok contributors"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/wjgoarxiv/litgrok",
|
|
9
|
+
"repository": "https://github.com/wjgoarxiv/litgrok",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["grok-build", "skills", "hooks", "workflow", "evidence"],
|
|
12
|
+
"skills": [
|
|
13
|
+
"./.grok/skills/autoconference",
|
|
14
|
+
"./.grok/skills/autoresearch",
|
|
15
|
+
"./.grok/skills/browser-drive",
|
|
16
|
+
"./.grok/skills/comment-checker",
|
|
17
|
+
"./.grok/skills/debugging",
|
|
18
|
+
"./.grok/skills/deep-interview",
|
|
19
|
+
"./.grok/skills/frontend-ui-ux",
|
|
20
|
+
"./.grok/skills/lit-burnoff",
|
|
21
|
+
"./.grok/skills/lit-burnoff-file",
|
|
22
|
+
"./.grok/skills/lit-code",
|
|
23
|
+
"./.grok/skills/lit-commit",
|
|
24
|
+
"./.grok/skills/lit-comprehend",
|
|
25
|
+
"./.grok/skills/lit-crucible",
|
|
26
|
+
"./.grok/skills/lit-handoff",
|
|
27
|
+
"./.grok/skills/lit-init",
|
|
28
|
+
"./.grok/skills/lit-korean",
|
|
29
|
+
"./.grok/skills/lit-plan",
|
|
30
|
+
"./.grok/skills/lit-recap",
|
|
31
|
+
"./.grok/skills/lit-scientific-visualization",
|
|
32
|
+
"./.grok/skills/lit-team",
|
|
33
|
+
"./.grok/skills/litgoal",
|
|
34
|
+
"./.grok/skills/litgrok",
|
|
35
|
+
"./.grok/skills/litresearch",
|
|
36
|
+
"./.grok/skills/litwork",
|
|
37
|
+
"./.grok/skills/lsp",
|
|
38
|
+
"./.grok/skills/lsp-setup",
|
|
39
|
+
"./.grok/skills/refactor",
|
|
40
|
+
"./.grok/skills/review-work",
|
|
41
|
+
"./.grok/skills/rules",
|
|
42
|
+
"./.grok/skills/start-work",
|
|
43
|
+
"./.grok/skills/structural-search",
|
|
44
|
+
"./.grok/skills/visual-qa",
|
|
45
|
+
"./.grok/skills/wikify"
|
|
46
|
+
],
|
|
47
|
+
"agents": [
|
|
48
|
+
"./.grok/agents/litgrok-executor.md",
|
|
49
|
+
"./.grok/agents/litgrok-korean-prose-editor.md",
|
|
50
|
+
"./.grok/agents/litgrok-korean-style-analyzer.md",
|
|
51
|
+
"./.grok/agents/litgrok-librarian-researcher.md",
|
|
52
|
+
"./.grok/agents/litgrok-meaning-preservation-auditor.md",
|
|
53
|
+
"./.grok/agents/litgrok-native-flow-reviewer.md",
|
|
54
|
+
"./.grok/agents/litgrok-planner.md",
|
|
55
|
+
"./.grok/agents/litgrok-polish-orchestrator.md",
|
|
56
|
+
"./.grok/agents/litgrok-qa-runner.md",
|
|
57
|
+
"./.grok/agents/litgrok-quality-reviewer.md",
|
|
58
|
+
"./.grok/agents/litgrok-verifier.md"
|
|
59
|
+
],
|
|
60
|
+
"hooks": "./hooks/hooks.json"
|
|
61
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.0.3
|
|
6
|
+
|
|
7
|
+
- Add an animated README cover with a static option for reduced motion.
|
|
8
|
+
- Remove automatic skill review because it never completed a review in practice. Leftover `pending-review.json` and `skill-loop-state.json` files are inactive and may be deleted; no other state is affected.
|
|
9
|
+
- Refuse to publish when the test suite fails.
|
|
10
|
+
- Remove the retired `skill-observer` skill and its empty directories during upgrades while preserving user-owned files. If a user-owned file is inside the retired directory, installation refuses and names its path.
|
|
11
|
+
- List all 33 skills, 11 agents, and 11 hooks in the marketplace manifest so plugin scanners can find every component.
|
|
12
|
+
- Remove the private checkout path from the `litgoal` example.
|
|
13
|
+
|
|
14
|
+
## 1.0.2
|
|
15
|
+
|
|
16
|
+
- Add an explicit marketplace scanner manifest that enumerates all 34 skills, 11 agents, and the native hook manifest while preserving the existing Grok payload manifest.
|
|
17
|
+
- Make the optional cross-product payload freshness probe accept an injected family layout instead of embedding private checkout paths.
|
|
18
|
+
- Ignore local `.env` and `.npmrc` files so credentials and per-machine registry settings stay outside the product tree.
|
|
19
|
+
|
|
5
20
|
## 1.0.1
|
|
6
21
|
|
|
7
22
|
- Make the installer honor explicit `--yes` consent for piped, non-TTY
|
package/README.md
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
|
|
2
|
+
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover.webp">View the static cover</a></p>
|
|
2
3
|
|
|
3
4
|
<h1 align="center">LitGrok</h1>
|
|
4
5
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
6
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
6
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK display type" /></p>
|
|
7
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok clay mark" /></p>
|
|
7
8
|
|
|
8
9
|
Make something useful in Grok Build. Leave the checked result and the next step with your project.
|
|
9
10
|
|
|
10
11
|
[한국어](./README_ko-KR.md) · [Install](#install-in-30-seconds) · [First use](#first-lit-use) · [Reference](./docs/reference.md)
|
|
11
12
|
|
|
12
13
|
<p align="center">
|
|
13
|
-
<a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
14
|
-
<a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
14
|
+
<a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/readme/badge-version.svg" alt="1.0.3" /></a>
|
|
15
|
+
<a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
18
|
<p align="center">
|
|
@@ -26,9 +27,9 @@ Make something useful in Grok Build. Leave the checked result and the next step
|
|
|
26
27
|
>
|
|
27
28
|
> **Leave something the next session can pick up.**
|
|
28
29
|
|
|
29
|
-
It ships
|
|
30
|
+
It ships 33 skills, 11 agents, one project rule, and eleven hook registrations. The installer copies the complete payload into your project; Grok Build runs the session and owns model selection.
|
|
30
31
|
|
|
31
|
-
Package: **@litfamily/litgrok** · Version: **1.0.
|
|
32
|
+
Package: **@litfamily/litgrok** · Version: **1.0.3** · [MIT](./LICENSE)
|
|
32
33
|
|
|
33
34
|
The scientific visualization corpus is packaged at `.grok/vendor/scientific-visualization/`; the numeric `045_scientific-visualization` label remains only in license and provenance filenames.
|
|
34
35
|
|
|
@@ -52,7 +53,7 @@ Grok Build uses the explicit `/litwork` route for a bounded task. It owns model
|
|
|
52
53
|
|
|
53
54
|
In Grok Build, `/litwork` starts the bounded work checklist; `handoff` or `/lit-handoff` carries the checked result and next step; `/lit-plan` records a plan with checks; `/start-work <approved-plan>` executes that plan; `/review-work` inspects the change and its evidence; and `/litresearch` runs bounded, source-traceable research. The expected effect is a resumable, checked project record. The host limit is explicit: Grok Build owns execution and model selection, while LitGrok installs the `.grok` payload; hooks require a trusted Git root and a plain folder may load skills and rules without hooks. These images are static route cues, not proof of live host behavior.
|
|
54
55
|
|
|
55
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
56
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok ignition apparatus" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok continuity apparatus" /></p>
|
|
56
57
|
|
|
57
58
|
<p align="center"><a href="./docs/assets/readme/ignition-film.mp4"><img src="./docs/assets/readme/ignition-poster.png" width="720" alt="Ignition motion poster" /></a></p>
|
|
58
59
|
|
|
@@ -75,15 +76,15 @@ LITGROK_PACK='/absolute/path/to/the-provided-package.tgz'
|
|
|
75
76
|
npm exec --yes --package "$LITGROK_PACK" -- litgrok install
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
The default destination is `<project>/.grok/`. Use `--package @litfamily/litgrok@1.0.
|
|
79
|
+
The default destination is `<project>/.grok/`. Use `--package @litfamily/litgrok@1.0.3` for a pinned install, or add `--user` to install under `~/.grok/`. [Install and upgrade details](./docs/reference.md#install).
|
|
79
80
|
|
|
80
|
-
Project hooks need a trusted Git project root in Grok Build. A plain folder can still load the installed skills and rules while hooks remain unavailable. For a new disposable project, run `git init` yourself before trusting it; for an existing repository, open Grok Build from its actual root. The installer never runs `git init` or changes trust. In the observed Grok Build 1.0.
|
|
81
|
+
Project hooks need a trusted Git project root in Grok Build. A plain folder can still load the installed skills and rules while hooks remain unavailable. For a new disposable project, run `git init` yourself before trusting it; for an existing repository, open Grok Build from its actual root. The installer never runs `git init` or changes trust. In the observed Grok Build 1.0.23 host, `grok --trust inspect --json` accepted the trust-and-inspect route even though `--trust` was omitted from `grok --help`; this is version-specific behavior.
|
|
81
82
|
|
|
82
83
|
If `CI` or `NO_COLOR` is set, even to an empty value, installation is a no-write preview. So is `--no-color`. Without `--yes`, a non-interactive run is also a no-write preview; with `--yes`, installation proceeds without a TTY as long as none of the above apply. Check that the installer reports actual writes before continuing.
|
|
83
84
|
|
|
84
85
|
## First lit use
|
|
85
86
|
|
|
86
|
-
Open or restart Grok Build at the installed project’s Git root. Review and trust its project hooks with `/hooks-trust`, or, on the observed Grok Build 1.0.
|
|
87
|
+
Open or restart Grok Build at the installed project’s Git root. Review and trust its project hooks with `/hooks-trust`, or, on the observed Grok Build 1.0.23 host, use `grok --trust inspect --json`. A plain folder can still load skills and rules while hooks remain unavailable. Check `/skills` for the installed catalog and `/hooks` for hook registrations. LitGrok does not create a Git root or change trust.
|
|
87
88
|
|
|
88
89
|
Start with a small task that needs no external service or existing test suite. Send this in Grok Build:
|
|
89
90
|
|
|
@@ -142,7 +143,7 @@ The hooks' `.grok/litgrok/session-ledger/` records event order. Judge success fr
|
|
|
142
143
|
| Review a change and its evidence | [`/review-work`](./.grok/skills/review-work/SKILL.md) |
|
|
143
144
|
| Leave a resumable handoff | [`/lit-handoff`](./.grok/skills/lit-handoff/SKILL.md) |
|
|
144
145
|
|
|
145
|
-
Use `/skills` for all
|
|
146
|
+
Use `/skills` for all 33 skills. [Rename compatibility](./docs/reference.md#skill-rename-compatibility) covers the one-release aliases; old slash routes are not guaranteed.
|
|
146
147
|
|
|
147
148
|
## Safety and uninstall
|
|
148
149
|
|
|
@@ -172,7 +173,6 @@ Match the scope used for installation. Re-run `install` to update. The installer
|
|
|
172
173
|
## Documentation
|
|
173
174
|
|
|
174
175
|
- [Operational reference](./docs/reference.md): installation, hooks, terminal output, payload checks, and source provenance.
|
|
175
|
-
- [Skill learning loop](./docs/reference.md#skill-learning-loop): proposal review, explicit apply, rollback, and macOS/Linux support. Windows learning-loop commands are unsupported.
|
|
176
176
|
- [Project rule](./.grok/rules/00-litgrok.md) and [skill catalog](./.grok/skills/).
|
|
177
177
|
- [Changelog](./CHANGELOG.md) and [license](./LICENSE).
|
|
178
178
|
|
package/README_ko-KR.md
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover-motion.webp" width="100%" alt="LitGrok cover art. An orange signal moves through orbital paths above the GROK BUILD wordmark. The static family cover appears for reduced-motion preference." /></picture></p>
|
|
2
|
+
<p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/cover.webp">정지 표지 보기</a></p>
|
|
2
3
|
|
|
3
4
|
<h1 align="center">LitGrok</h1>
|
|
4
5
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
6
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
6
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-wordmark.svg" width="480" alt="LITGROK 디스플레이 타입" /></p>
|
|
7
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-clay-icon.png" width="160" alt="LitGrok 클레이 마크" /></p>
|
|
7
8
|
|
|
8
9
|
Grok Build에서 작은 결과물을 만들고, 확인한 내용과 다음 할 일을 프로젝트에 남기세요.
|
|
9
10
|
|
|
10
11
|
[English](./README.md) · [설치](#30초-설치) · [처음 사용하기](#첫-lit-작업) · [상세 안내](./docs/reference_ko-KR.md)
|
|
11
12
|
|
|
12
13
|
<p align="center">
|
|
13
|
-
<a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
14
|
-
<a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
14
|
+
<a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/readme/badge-version.svg" alt="1.0.3" /></a>
|
|
15
|
+
<a href="./LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
18
|
<p align="center">
|
|
@@ -26,9 +27,9 @@ Grok Build에서 작은 결과물을 만들고, 확인한 내용과 다음 할
|
|
|
26
27
|
>
|
|
27
28
|
> **대화가 끝난 자리에서, 다음 작업이 시작되도록.**
|
|
28
29
|
|
|
29
|
-
skill
|
|
30
|
+
skill 33개, agent 11개, project rule 하나, hook 등록 열한 개를 제공합니다. Installer가 프로젝트에 전체 파일을 복사하고, 세션 실행과 모델 선택은 Grok Build가 담당합니다.
|
|
30
31
|
|
|
31
|
-
패키지: **@litfamily/litgrok** · 버전: **1.0.
|
|
32
|
+
패키지: **@litfamily/litgrok** · 버전: **1.0.3** · [MIT](./LICENSE)
|
|
32
33
|
|
|
33
34
|
과학 시각화 corpus는 `.grok/vendor/scientific-visualization/`에 포함되며, 숫자 `045_scientific-visualization` 표기는 라이선스와 provenance 파일명에만 남습니다.
|
|
34
35
|
|
|
@@ -52,7 +53,7 @@ Grok Build에서는 명시적인 `/litwork` 경로로 작은 작업을 시작합
|
|
|
52
53
|
|
|
53
54
|
Grok Build에서 `/litwork`는 범위를 정한 작업 체크리스트를 시작하고, `handoff` 또는 `/lit-handoff`는 확인한 결과와 다음 단계를 건네며, `/lit-plan`은 확인 기준이 있는 계획을 남기고, `/start-work <승인된 계획>`은 그 계획을 실행하며, `/review-work`는 변경과 근거를 검토하고, `/litresearch`는 출처를 추적할 수 있는 범위 있는 조사를 합니다. 기대하는 효과는 확인 결과를 남기고 다음 세션에서 이어갈 수 있는 프로젝트 기록입니다. 호스트 제약도 분명합니다. 실행과 모델 선택은 Grok Build가 담당하고 LitGrok은 `.grok` payload를 설치합니다. Hook은 신뢰한 Git root에서만 제공되며, 일반 폴더에서는 skill과 rule만 로드되고 hook은 없을 수 있습니다. 이 이미지는 실제 호스트 동작을 증명하지 않는 정적 경로 안내입니다.
|
|
54
55
|
|
|
55
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.
|
|
56
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-ignition-1600.webp" width="48%" alt="LitGrok 점화 장치" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.3/docs/assets/litgrok-continuity-1600.webp" width="48%" alt="LitGrok 연속 장치" /></p>
|
|
56
57
|
|
|
57
58
|
<p align="center"><a href="./docs/assets/readme/ignition-film.mp4"><img src="./docs/assets/readme/ignition-poster.png" width="720" alt="Ignition 모션 포스터" /></a></p>
|
|
58
59
|
|
|
@@ -75,15 +76,15 @@ LITGROK_PACK='/absolute/path/to/the-provided-package.tgz'
|
|
|
75
76
|
npm exec --yes --package "$LITGROK_PACK" -- litgrok install
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
기본 설치 위치는 `<project>/.grok/`입니다. 버전을 고정하려면 `--package @litfamily/litgrok@1.0.
|
|
79
|
+
기본 설치 위치는 `<project>/.grok/`입니다. 버전을 고정하려면 `--package @litfamily/litgrok@1.0.3`를 사용하세요. `--user`를 붙이면 `~/.grok/`에 설치합니다. [설치·업데이트 상세 안내](./docs/reference_ko-KR.md#설치).
|
|
79
80
|
|
|
80
|
-
Project hook은 Grok Build에서 신뢰한 Git 프로젝트 루트가 있어야 발견됩니다. 일반 폴더에서도 설치된 skill과 rule은 로드될 수 있지만 hook은 0개로 남을 수 있습니다. 새 disposable project라면 사용자가 직접 `git init`을 실행한 뒤 trust를 허용하세요. 기존 저장소라면 실제 root에서 Grok Build를 여세요. Installer는 `git init`을 실행하거나 trust를 바꾸지 않습니다. 관찰된 Grok Build 1.0.
|
|
81
|
+
Project hook은 Grok Build에서 신뢰한 Git 프로젝트 루트가 있어야 발견됩니다. 일반 폴더에서도 설치된 skill과 rule은 로드될 수 있지만 hook은 0개로 남을 수 있습니다. 새 disposable project라면 사용자가 직접 `git init`을 실행한 뒤 trust를 허용하세요. 기존 저장소라면 실제 root에서 Grok Build를 여세요. Installer는 `git init`을 실행하거나 trust를 바꾸지 않습니다. 관찰된 Grok Build 1.0.23에서는 `grok --trust inspect --json`이 동작했지만 `grok --help`에는 global `--trust`가 표시되지 않았습니다. 이는 이 버전에서 확인한 동작입니다.
|
|
81
82
|
|
|
82
83
|
`CI`나 `NO_COLOR`가 설정되어 있으면 값이 비어 있어도 설치는 파일을 쓰지 않는 미리보기로 끝납니다. `--no-color`도 같습니다. `--yes` 없이 실행한 비대화형 설치도 미리보기이며, `--yes`를 쓰면 위 조건이 없는 한 TTY 없이도 설치가 진행됩니다. 설치 메시지에서 파일이 쓰였는지 확인한 뒤 다음 단계로 넘어가세요.
|
|
83
84
|
|
|
84
85
|
## 첫 lit 작업
|
|
85
86
|
|
|
86
|
-
설치한 프로젝트의 Git root에서 Grok Build를 열거나 재시작합니다. `/hooks-trust`에서 project hook을 확인하고 신뢰하세요. 관찰된 Grok Build 1.0.
|
|
87
|
+
설치한 프로젝트의 Git root에서 Grok Build를 열거나 재시작합니다. `/hooks-trust`에서 project hook을 확인하고 신뢰하세요. 관찰된 Grok Build 1.0.23에서는 `grok --trust inspect --json`도 사용할 수 있지만 `--help`에는 이 global flag가 나오지 않습니다. 일반 폴더에서는 skill과 rule이 로드되어도 hook은 0개로 남을 수 있습니다. `/skills`에서 설치된 목록을, `/hooks`에서 hook 등록을 확인합니다. LitGrok은 Git root를 만들거나 trust를 바꾸지 않습니다.
|
|
87
88
|
|
|
88
89
|
외부 서비스나 기존 테스트가 필요 없는 작은 작업부터 시작하세요. Grok Build에 다음을 입력합니다.
|
|
89
90
|
|
|
@@ -142,7 +143,7 @@ Hook의 `.grok/litgrok/session-ledger/`는 이벤트가 발생한 순서를 남
|
|
|
142
143
|
| 변경 내용과 근거 검토 | [`/review-work`](./.grok/skills/review-work/SKILL.md) |
|
|
143
144
|
| 다음 세션을 위한 인수인계 | [`/lit-handoff`](./.grok/skills/lit-handoff/SKILL.md) |
|
|
144
145
|
|
|
145
|
-
전체 skill
|
|
146
|
+
전체 skill 33개는 `/skills`에서 확인하세요. 이전 이름을 한 릴리스 동안 별칭으로 유지하는 정책은 [이름 변경과 호환성](./docs/reference_ko-KR.md#skill-이름-변경과-호환성)을 보세요. 이전 slash 경로는 보장되지 않습니다.
|
|
146
147
|
|
|
147
148
|
## 안전과 제거
|
|
148
149
|
|
|
@@ -172,7 +173,6 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok uninstall --user
|
|
|
172
173
|
## 문서
|
|
173
174
|
|
|
174
175
|
- [상세 안내](./docs/reference_ko-KR.md): 설치, hook, 터미널 출력, 패키지 검증, 출처.
|
|
175
|
-
- [Skill learning loop](./docs/reference_ko-KR.md#skill-learning-loop): proposal 검토, 명시적 적용, rollback, macOS/Linux 지원. Windows의 learning-loop 명령은 지원하지 않습니다.
|
|
176
176
|
- [Project rule](./.grok/rules/00-litgrok.md)과 [skill 목록](./.grok/skills/).
|
|
177
177
|
- [변경 이력](./CHANGELOG.md)과 [라이선스](./LICENSE).
|
|
178
178
|
|
package/bin/litgrok.mjs
CHANGED
|
@@ -46,6 +46,7 @@ const PRE_MANIFEST_PAYLOAD_HASHES = Object.freeze({
|
|
|
46
46
|
'agents/litgrok-quality-reviewer.md': 'ed6f2687770f0f31c6821f0ad49d717362807f0bb5f4f27cf4d36be1e7dfd5a2',
|
|
47
47
|
'hooks/record-passive-event.mjs': '9f5bd1d6c8b8e6c0be4cc61cf31f0e26f4f8a41fceb826e88567f22efa2b0090',
|
|
48
48
|
'hooks/session-start.mjs': '5706ccce58340e78e435b9c1fd2224e101872ce1d0f51a9d187feb31b67c3b5d',
|
|
49
|
+
'hooks/stop.mjs': 'c796f02ac3dc99716d0c2f478bf93ec35cd8a9c725de18d12895957ee261b9c3',
|
|
49
50
|
'rules/00-litgrok.md': 'd46d1672e80250c8748458afa9b0fc1a46c2a318d31c4d58ab1ebc3f8f2eb804',
|
|
50
51
|
'skills/autoconference/SKILL.md': '025e9420ed9986b0466a8d660a4ed7f3e2d2243051ed3622be8ca87cbeba9458',
|
|
51
52
|
'skills/autoconference/references/_canonical-corpus/manifest.json': '4554ee4041b73577a844abc27a97db91e941b8412f1888209203251dc1fee500',
|
|
@@ -59,6 +60,7 @@ const PRE_MANIFEST_PAYLOAD_HASHES = Object.freeze({
|
|
|
59
60
|
'skills/lit-handoff/SKILL.md': '7152d6399fd778ab3d16e1abad2ec97e2f4be4350cd3993cdde038cc1211dd80',
|
|
60
61
|
'skills/lit-scientific-visualization/SKILL.md': 'ffc3b2ea49dd7e7c4c7d4568f289df294a3a30f953c11039f98aaf6f8fb983ee',
|
|
61
62
|
'skills/lit-scientific-visualization/scripts/verify-canonical-corpus.mjs': 'a1cfe0578195098dc4afc2d25f0d391f38aeaa57cd3970fa7dca51e20cbf929d',
|
|
63
|
+
'skills/litgoal/SKILL.md': 'e3fd76a8f4c91903ab85073b492f3981f76cb17644b840ba22d2a1c5e82178a9',
|
|
62
64
|
'skills/litgrok/SKILL.md': '6ea1fb66d5a1458e182cff5808ccc416487dbbad0341988bcda0f247645081e2',
|
|
63
65
|
'skills/litwork/SKILL.md': '771b7cead03c0d1d1e67af82e308ea0980b8ab18474026516798f559048beda7',
|
|
64
66
|
'skills/lsp-setup/SKILL.md': '313ffd924f00a1523905d2588e0812c8edcaec84b114d2d487506bd905e5376d',
|
|
@@ -66,8 +68,6 @@ const PRE_MANIFEST_PAYLOAD_HASHES = Object.freeze({
|
|
|
66
68
|
'skills/refactor/SKILL.md': '5fd2df1a36eae216f8af4db09e7e7d26231b167907ad19c49465153a1dcadde0',
|
|
67
69
|
'skills/review-work/SKILL.md': 'acfef3ff9c6e243cb9b88169a67e749e27a2e530af09aed07a2d66dd932c3b5d',
|
|
68
70
|
'skills/rules/SKILL.md': 'b880136962faeb3dea93cc42e30f5d3cc461a03fe71f7ff908d4b09170c38c5f',
|
|
69
|
-
'skills/skill-observer/scripts/skill-loop.mjs': '3f3f5265928c0d71175b0f23f71b836d1dc05e7efba407bfdc2d263c6aaed0ce',
|
|
70
|
-
'skills/skill-observer/scripts/validate-skills.mjs': 'cd71e88c45e57869114305f048257f3da7ec1dfa66f70d9529314defb5fa1a97',
|
|
71
71
|
'skills/start-work/SKILL.md': 'ddc7357f99c78cd3405c1cb0202f9b13871efbe59f365e9f39727c429791028b',
|
|
72
72
|
'skills/structural-search/SKILL.md': '3bbc13b5d0df58fbae07dd53e7ecbf13f311f12311cc3bd313803d63bd331ee0',
|
|
73
73
|
'skills/visual-qa/references/complete-contract.md': '9562a993b9fc75f8cda5e5f810ff534590f4ace36e696bf60119c0b27ba19cd5',
|
|
@@ -152,13 +152,19 @@ const PRE_MANIFEST_LEGACY_PAYLOAD_HASHES = Object.freeze({
|
|
|
152
152
|
'skills/programming/references/typescript/type-patterns.md': 'a21e27706f5d1e60be8f37d2d47949d0759158c999c4a08628f5f925b184d946',
|
|
153
153
|
'skills/programming/references/worked-cases.md': 'ccb6fb8011cda2391d73c4f85ffc3b8038486d77134b986b046d1f62a2f7a9d2',
|
|
154
154
|
'skills/remove-ai-slops/SKILL.md': 'db2f9e91dfd70a2077a091d1c422cba9f6d576af58868df4279d0e7542c29380',
|
|
155
|
+
'skills/skill-observer/SKILL.md': '1edf489673d958b3a7c60c5e1a036498510a02859dcf32e68a6d50b21f2fa344',
|
|
156
|
+
'skills/skill-observer/references/review-contract.md': 'f55dc8334f3b8d8498c84d57725fa03af8fbd689b2dd7cce25e49931629ee54f',
|
|
157
|
+
'skills/skill-observer/scripts/curator.mjs': '07f48d2160ba64584acd17ae9bd55efd6272546722576c288725b8850e3f0455',
|
|
158
|
+
'skills/skill-observer/scripts/review.mjs': '5b79fedae7f7c4d2b6d898717ae427bae1bd6d2c7f9f4bbc2f410f86468f7691',
|
|
159
|
+
'skills/skill-observer/scripts/skill-loop.mjs': '3f3f5265928c0d71175b0f23f71b836d1dc05e7efba407bfdc2d263c6aaed0ce',
|
|
160
|
+
'skills/skill-observer/scripts/validate-skills.mjs': 'cd71e88c45e57869114305f048257f3da7ec1dfa66f70d9529314defb5fa1a97',
|
|
155
161
|
'skills/teammode/SKILL.md': '23db7152e2ce65cb5f7c52455d6cbd122485bb0fdb13813a8a54b824e8e44f08',
|
|
156
162
|
'skills/teammode/references/explore-packet.md': 'c419c1c84783ddfae272e378c4f7e623ec4fbb437168d2d5cb8436baf4c14e30',
|
|
157
163
|
'skills/teammode/references/general-purpose-packet.md': '45ad9cf82157563ebb20af360bb0b09d7afd7aa0fe114a91816523475ebdc88c',
|
|
158
164
|
'skills/teammode/references/plan-packet.md': '68e292f9a6dc64f7e87a45417d5f92688aac9c2ffb7b519f9e2cab10b5ef4759',
|
|
159
165
|
'skills/text-naturalization/SKILL.md': 'aa1ff8f68ab0bf71cb47818b536c4a2934da65adb413ee43ec5839b540b2df8e',
|
|
160
166
|
});
|
|
161
|
-
const USAGE = 'Usage: litgrok [install|uninstall] [--user|--project] [--dry-run] [--no-color] [--yes]\n
|
|
167
|
+
const USAGE = 'Usage: litgrok [install|uninstall] [--user|--project] [--dry-run] [--no-color] [--yes]\n';
|
|
162
168
|
const BRAILLE_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
163
169
|
const SPINNER_INTERVAL_MS = 80;
|
|
164
170
|
const CLEAR_LINE = '\r\u001b[2K';
|
|
@@ -324,7 +330,7 @@ function receiptCard(options, root, colors, { status, written, current }) {
|
|
|
324
330
|
].join('\n');
|
|
325
331
|
}
|
|
326
332
|
|
|
327
|
-
function failureCard(options, root, colors, step, message) {
|
|
333
|
+
function failureCard(options, root, colors, step, message, { showHookTrust = true } = {}) {
|
|
328
334
|
return [
|
|
329
335
|
'',
|
|
330
336
|
` ${paint('╭─ INSTALL FAILED', '38;2;230;60;60', colors)}`,
|
|
@@ -332,9 +338,11 @@ function failureCard(options, root, colors, step, message) {
|
|
|
332
338
|
` │ Scope: ${scopeDescription(options, root)}`,
|
|
333
339
|
` │ Step: ${step}`,
|
|
334
340
|
` │ Reason: ${message}`,
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
341
|
+
...(showHookTrust ? [
|
|
342
|
+
' │ Hooks: project hooks require trust from a Git project root',
|
|
343
|
+
' │ Trust: use /hooks-trust or, on Grok Build 1.0.13, grok --trust inspect --json',
|
|
344
|
+
' │ Installer never runs git init or changes trust',
|
|
345
|
+
] : []),
|
|
338
346
|
' │ Next: resolve the issue and rerun the install',
|
|
339
347
|
` ${paint('╰─', '38;2;230;60;60', colors)}`,
|
|
340
348
|
'',
|
|
@@ -348,7 +356,9 @@ function errorText(error) {
|
|
|
348
356
|
function reportFailure(error, { stderr, stdout, options, root, colors, step }) {
|
|
349
357
|
const lines = Array.isArray(error?.stderrLines) ? error.stderrLines : [`litgrok: ${errorText(error)}`];
|
|
350
358
|
for (const line of lines) stderr.write(`${line}\n`);
|
|
351
|
-
stdout.write(failureCard(options, root, colors, error?.step ?? step, errorText(error)
|
|
359
|
+
stdout.write(failureCard(options, root, colors, error?.step ?? step, errorText(error), {
|
|
360
|
+
showHookTrust: error?.legacyOwnershipConflict !== true,
|
|
361
|
+
}));
|
|
352
362
|
}
|
|
353
363
|
|
|
354
364
|
function normalizedRelativePath(relativePath) {
|
|
@@ -489,6 +499,12 @@ function retiredPayload(root, files, manifest) {
|
|
|
489
499
|
const hashes = new Map([...previous].filter(([path]) => !currentPaths.has(path) && retiredPath(path)));
|
|
490
500
|
for (const path of agentPaths) if (!hashes.has(path)) hashes.set(path, undefined);
|
|
491
501
|
const directories = [];
|
|
502
|
+
const retiredSkillRoots = new Set(
|
|
503
|
+
[...hashes.keys()]
|
|
504
|
+
.filter((path) => path.startsWith('skills/'))
|
|
505
|
+
.map((path) => path.split('/').slice(0, 2).join('/'))
|
|
506
|
+
.filter((path) => !currentPaths.has(`${path}/SKILL.md`)),
|
|
507
|
+
);
|
|
492
508
|
|
|
493
509
|
function visit(path) {
|
|
494
510
|
const target = join(root, path);
|
|
@@ -511,7 +527,7 @@ function retiredPayload(root, files, manifest) {
|
|
|
511
527
|
}
|
|
512
528
|
directories.push(target);
|
|
513
529
|
}
|
|
514
|
-
for (const path of skillRoots) visit(path);
|
|
530
|
+
for (const path of new Set([...skillRoots, ...retiredSkillRoots])) visit(path);
|
|
515
531
|
for (const path of vendorRoots) visit(path);
|
|
516
532
|
const entries = [...hashes].map(([relativePath, expectedHash]) => ({ root, relativePath, expectedHash, target: join(root, relativePath) }));
|
|
517
533
|
return { entries, directories };
|
|
@@ -690,10 +706,6 @@ export async function run(args, context = {}) {
|
|
|
690
706
|
stdout.write(`${renderMark({ size: 'banner', productName: `grok v${packageVersion()}`, env, isTTY: stdout.isTTY, args }).join('\n')}\n\n${USAGE}`);
|
|
691
707
|
return 0;
|
|
692
708
|
}
|
|
693
|
-
if (args[0] === 'skill-loop') {
|
|
694
|
-
const { runSkillLoop } = await import('../.grok/skills/skill-observer/scripts/skill-loop.mjs');
|
|
695
|
-
return runSkillLoop(args.slice(1), { cwd, env, stderr, stdout });
|
|
696
|
-
}
|
|
697
709
|
const options = parseInstall(args);
|
|
698
710
|
if (!options) {
|
|
699
711
|
stderr.write(USAGE);
|
|
@@ -792,7 +804,13 @@ export async function run(args, context = {}) {
|
|
|
792
804
|
if (owned[index] === 'conflict') stderrLines.push(`Refusing to ${options.command === 'install' ? 'overwrite' : 'remove'} different existing file: ${files[index].target}`);
|
|
793
805
|
}
|
|
794
806
|
for (let index = 0; index < legacyEntries.length; index += 1) {
|
|
795
|
-
if (legacyStates[index]
|
|
807
|
+
if (legacyStates[index] !== 'conflict') continue;
|
|
808
|
+
const entry = legacyEntries[index];
|
|
809
|
+
const retiredSkill = retiredDirectories.some((directory) => (
|
|
810
|
+
directory.startsWith(`${join(root, 'skills')}${sep}`) && entry.target.startsWith(`${directory}${sep}`)
|
|
811
|
+
));
|
|
812
|
+
const retiredDirectory = retiredSkill ? 'the retired skill directory' : 'the retired payload directory';
|
|
813
|
+
stderrLines.push(`Refusing legacy conflict: ${entry.target} is not package-owned. Move it out of ${retiredDirectory} or remove it yourself, then rerun the install so the directory can be cleaned.`);
|
|
796
814
|
}
|
|
797
815
|
const legacyDetail = legacyEntries.length === 0
|
|
798
816
|
? ''
|
|
@@ -800,6 +818,7 @@ export async function run(args, context = {}) {
|
|
|
800
818
|
const error = new Error(`${counts.missing} missing · ${counts.current} already-current · ${counts.owned} owned · ${counts.conflicts} conflicts${legacyDetail}`);
|
|
801
819
|
error.step = 'OWNERSHIP';
|
|
802
820
|
error.stderrLines = stderrLines;
|
|
821
|
+
error.legacyOwnershipConflict = legacyCounts.conflicts > 0;
|
|
803
822
|
throw error;
|
|
804
823
|
}
|
|
805
824
|
const legacyDetail = legacyEntries.length === 0
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.3"><title>local: 1.0.3</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="290" transform="scale(.1)">local</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.3</text></g></svg>
|
package/docs/privacy.md
CHANGED
|
@@ -4,9 +4,7 @@ This describes package source behavior, not Grok or a model provider's privacy p
|
|
|
4
4
|
|
|
5
5
|
Passive hooks in `.grok/hooks/record-passive-event.mjs` read hook JSON and record session identity, cwd/workspace paths, event names and time, optional prompt IDs, and tool names with input digests. They inspect optional prompt text for planning activation without persisting raw prompt/tool input in those passive records. Hashed filenames do not anonymize the JSON: records retain the session ID. The hedge guard examines proposed paths and content; Stop may record a plan-gate reason.
|
|
6
6
|
|
|
7
|
-
Project `.grok/litgrok/`
|
|
8
|
-
|
|
9
|
-
An explicitly requested `skill-loop review` runs `grok export`, scrubs known secret patterns, bounds the transcript excerpt to 64 KiB, and passes it with eligible skill content and session/root references to `grok --single`. This source path is in `.grok/skills/skill-observer/scripts/review.mjs`. Grok may send that input to its configured provider. The prompt is also passed as a command-line argument and may be visible to local process inspection. Pattern-based scrubbing is not a guarantee that all sensitive information is removed. Inspect the source and data before requesting a review of sensitive work. Disabled review tools and web search do not imply offline model execution.
|
|
7
|
+
Project `.grok/litgrok/` contains package-owned session ledgers and may contain other generated data from installed or older package versions. Older skill-review state is no longer read, migrated, rewritten, or deleted by LitGrok; it remains inert for the owner to manage.
|
|
10
8
|
|
|
11
9
|
Optional helpers may invoke Grok or external scientific tools; their behavior and dependencies remain separate. No blanket claim that all package-guided work stays offline is made.
|
|
12
10
|
|