Skip to content

Commit 69008be

Browse files
authored
Merge pull request #4 from grainulation/docs/v2.0.0-release
Restore README identity and finish v2.0.0 documentation
2 parents 1933344 + 986680e commit 69008be

8 files changed

Lines changed: 163 additions & 128 deletions

File tree

CONTRIBUTING.md

Lines changed: 41 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,70 @@
11
# Contributing to Grainulator
22

3-
Thanks for your interest in contributing to the Grainulator plugin.
4-
5-
## What Grainulator is
6-
7-
Grainulator is a Claude Code plugin that packages skills, agents, and
8-
hook wiring for research-sprint workflows. It's distributed via the
9-
grainulation marketplace, not npm.
3+
Grainulator provides evidence, memory, exports, and portable workflows through a CLI and one MCP server. Use it with any compatible host; Claude Code and Codex also have native plugin integrations. The v2.0.0 source is distributed through GitHub. The root npm package and component workspaces are private, so a GitHub release does not publish them to npm.
104

115
## Getting started
126

13-
```bash
7+
Use Node.js 24 or later; Node 25 is the development default in `.nvmrc` and `.node-version`.
8+
9+
```sh
1410
git clone https://github.com/grainulation/grainulator.git
1511
cd grainulator
16-
npm install
12+
npm ci --ignore-scripts
13+
node bin/grainulator.js doctor
1714
npm test
1815
```
1916

20-
The plugin expects to run inside Claude Code. For local smoke-testing,
21-
install it as a development plugin:
17+
For a direct MCP connection, `node bin/grainulator.js connect --dir /absolute/path/to/project` prints configuration without changing host settings. For a local Claude plugin check, use the tested invocation:
2218

23-
```bash
24-
# From inside Claude Code
25-
/plugin install /path/to/local/grainulator
19+
```sh
20+
claude --plugin-dir /absolute/path/to/grainulator
2621
```
2722

23+
For native Codex, install the intended local plugin through its marketplace mechanism and launch with `GRAINULATOR_WORKSPACE=/absolute/path/to/project codex`. Follow [plugin acceptance](docs/PLUGIN-TESTING.md) for installation, workspace binding, exact build verification, and actual host/subagent tool checks. Direct MCP success does not prove full plugin discovery.
24+
2825
## Filing issues
2926

30-
- Search existing issues before opening a new one.
31-
- For bugs, include reproduction steps, your Claude Code version, and
32-
relevant MCP server logs (from `~/.claude/logs/`).
33-
- For feature requests, describe the use case and what existing skill
34-
or command would have been relevant.
27+
- Include reproduction steps, expected and observed behavior, Node and host versions, and the source revision or installed build ID.
28+
- Include relevant redacted tool errors or traces. Remove credentials and private task content before sharing.
29+
- For feature requests, describe the user task and the limitation of the current workflow.
3530

3631
## Pull requests
3732

38-
1. Fork the repo and create a branch from `main`.
39-
2. If you're adding or changing a skill, update the skill's `SKILL.md`
40-
and any relevant test.
41-
3. Run `npm test`; add tests if you're adding functionality.
42-
4. Keep PRs focused — one change per PR.
43-
5. Use Biome for formatting: `npx biome format --write .` before
44-
committing (CI enforces this).
33+
1. Create a focused branch from `main` and preserve existing user data and compatibility boundaries.
34+
2. Update the relevant instructions when commands or behavior change. Add meaningful regression coverage for changed functionality.
35+
3. Run `npm test` and `npm run lint`, plus the checks relevant to your change. Use `npx biome format --write <changed-files>` for files covered by the repository's Biome configuration.
36+
4. Describe the problem, resulting behavior, checks actually run, and remaining limits. Do not report older test results as verification of newer edits.
4537

46-
## End-to-end tests
38+
## Verification and CI
4739

48-
`npm test` runs the unit suite and is what CI gates on. Playwright
49-
e2e runs locally only — not in CI — out of the maintainer's ranch
50-
harness. Keeping it local keeps browser tooling out of this repo's
51-
dep tree and keeps CI fast.
40+
CI runs `npm test`, `npm run build:site`, `npm run check:package`, and `npm run test:install` on Node 24 and 25. Separate jobs run lint, Rust runtime conformance, and the Playwright static-site check on Node 25. Browser tooling is a development dependency in this repository.
5241

53-
## Skills
42+
```sh
43+
npm run lint
44+
npm run test:install
45+
npm run test:runtime
46+
npx playwright install chromium
47+
npm run test:static
48+
```
49+
50+
Rust/Cargo is required for runtime conformance; Python 3 and Playwright Chromium are required for the static-site test. `npm run test:site` additionally exercises the local preview, playground, demo, scrolling, and organization site. Start `npm run dev` for the preview-dependent checks; see [deployment and browser checks](docs/DEPLOYMENT.md). Paid-provider and native-host tests require the relevant credentials and are separate from CI's static and synthetic checks.
5451

55-
Skills live in `skills/<name>/SKILL.md`. Each skill is one markdown
56-
file with YAML frontmatter (`name`, `description`, `tools`) and a
57-
prompt body. Keep tools lists minimal — only what the skill actually
58-
needs.
52+
## Skills and shared templates
5953

60-
Shared snippets live under `templates/` (files prefixed `_`
61-
are not loaded as skills). Reference them from a SKILL.md with the
62-
`${CLAUDE_PLUGIN_ROOT}/templates/<file>` path.
54+
Skills live in `skills/<name>/SKILL.md`, with YAML metadata and a portable Markdown workflow. Every directory under `skills/` must contain a real skill. Declare only needed tools; distinguish direct and host-prefixed MCP names where the host requires an allowlist.
6355

64-
## Version bumps
56+
Shared artifact templates live in root `templates/`, outside skill discovery. Claude can resolve `${CLAUDE_PLUGIN_ROOT}/templates/<file>`; other hosts resolve templates relative to the installed plugin or checkout. Preserve the documented accessibility shell when customizing artifacts.
6557

66-
Grainulator uses `npm version <patch|minor|major>` which runs the
67-
`version` script automatically — it syncs the new version into
68-
`.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`
69-
and stages them so the bump commit is complete.
58+
## Version preparation
7059

71-
## Security
60+
Prepare a version change without automatically creating a Git commit or tag:
61+
62+
```sh
63+
npm version <patch|minor|major> --no-git-tag-version
64+
```
7265

73-
See `SECURITY.md` for private-disclosure channels.
66+
The version lifecycle synchronizes and stages `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.codex-plugin/plugin.json`, and root `plugin.json`. Review those changes alongside `package.json` and `package-lock.json`, then commit through the normal review flow. `npm run sync-version` alone updates manifest contents without staging them. Create a release tag only after required CI passes and the release is authorized. Npm publication is a separate action; the packages remain private.
7467

75-
## Code of conduct
68+
## Security and conduct
7669

77-
See `CODE_OF_CONDUCT.md`.
70+
See [SECURITY.md](SECURITY.md) for private disclosure and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for community expectations.

README.md

Lines changed: 106 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,153 @@
1-
# Grainulator
1+
<p align="center">
2+
<a href="https://grainulator.app"><img src="site/glitchy.png" alt="Glitchy — the Grainulator mascot" width="200"></a>
3+
</p>
24

3-
Evidence and verification for the model you already use.
5+
<h1 align="center">Grainulator</h1>
46

5-
Grainulator gives model-assisted work a local evidence ledger, checks for contradictions and weak support, and turns the remaining gaps into concrete next actions. Use it for research, engineering, or a managed command loop with a verifier that measures your task.
7+
<p align="center"><strong>Evidence and verification for the model you already use.</strong></p>
68

7-
**Grainulator 2.0.0** is distributed through the [v2.0.0 GitHub release](https://github.com/grainulation/grainulator/releases/tag/v2.0.0). This GitHub release is not published to npm. Use the tagged source and [dogfood guide](docs/DOGFOOD.md) to run it locally; existing repository history and stars are preserved.
9+
<p align="center">
10+
Keep the evidence. Challenge the answer. Know what to do next.<br>
11+
A shared workflow for research, engineering, and model-assisted work.
12+
</p>
813

9-
## Start locally
14+
<p align="center">
15+
<a href="https://grainulator.app/playground/"><img src="https://img.shields.io/badge/explore_the_playground-grainulator.app-98f3ef?style=for-the-badge" alt="Explore the Grainulator playground"></a>
16+
</p>
1017

11-
Requires Node.js 24 or later; Node 25 is the local default:
18+
<p align="center">
19+
<a href="https://github.com/grainulation/grainulator/releases"><img src="https://img.shields.io/github/v/release/grainulation/grainulator?label=release" alt="Latest GitHub release"></a>
20+
<a href="https://github.com/grainulation/grainulator/actions/workflows/ci.yml"><img src="https://github.com/grainulation/grainulator/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI on main"></a>
21+
<a href="docs/INSTALLATION.md"><img src="https://img.shields.io/badge/node-%E2%89%A524-339933?logo=nodedotjs&logoColor=white" alt="Node.js 24 or later"></a>
22+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT license"></a>
23+
<a href="https://deepwiki.com/grainulation/grainulator"><img src="https://deepwiki.com/badge.svg" alt="Docs on DeepWiki"></a>
24+
</p>
25+
26+
<p align="center">
27+
<a href="#quick-start">Quick start</a> ·
28+
<a href="docs/INSTALLATION.md">Installation</a> ·
29+
<a href="docs/TOOLS.md">Tools</a> ·
30+
<a href="docs/PLUGIN-TESTING.md">Agent setup</a> ·
31+
<a href="CHANGELOG.md">Changelog</a>
32+
</p>
33+
34+
---
35+
36+
## What it adds
37+
38+
Good models still need a way to keep track of evidence, revisit assumptions, and verify their work. Grainulator gives them that process, with a local ledger that stays with the task as it moves between models and sessions.
39+
40+
| Capability | What it gives you |
41+
| --- | --- |
42+
| **Evidence that stays with the work** | Typed claims, sources, evidence tiers, and provenance that survive edits and exports. |
43+
| **A check on the answer** | Conflict detection, weak-support signals, and explicit gaps to investigate. |
44+
| **Clear next actions** | Two lists: what the agent can continue automatically, and what needs your input. |
45+
| **Sessions you can carry forward** | Configurable research, stop/resume, reusable context, and credential-free exports. |
46+
| **Verification for your task** | A managed command loop that can use a verifier you provide. |
47+
48+
**One package, one MCP server.** Use the CLI, connect an MCP-compatible agent, or load the bundled Claude Code or Codex plugin. The consolidated components are included; separate ecosystem installations are not required.
49+
50+
## Quick start
51+
52+
Requires **Node.js 24+**. Node 25 is the development default.
1253

1354
```sh
1455
git clone --branch v2.0.0 https://github.com/grainulation/grainulator.git
1556
cd grainulator
1657
npm ci --ignore-scripts
1758
node bin/grainulator.js doctor
18-
node bin/grainulator.js init --dir ./sprints/example \
19-
--question 'Can this change meet our requirements?' \
20-
--audience engineers --constraints 'Preserve existing user data' \
21-
--done 'Implemented and verified, with remaining limits documented'
22-
node bin/grainulator.js connect --dir ./sprints/example
59+
node bin/grainulator.js preview
2360
```
2461

25-
`connect` prints configuration for one **grainulator** MCP server. It changes no host settings. Load that configuration in your host, or keep using the CLI. The portable [Grainulator workflow](skills/grainulator/SKILL.md) can be read by any agent; Claude Code also supports the bundled skills and hooks.
62+
Open **[localhost:4517/playground/](http://127.0.0.1:4517/playground/)** to choose your model, configure the workflow, and run research with your provider key.
2663

27-
## Call tools
64+
Want to look around first? The **[public playground](https://grainulator.app/playground/)** lets you explore the controls and export a setup. Model execution happens in your local installation.
2865

29-
The public server is `grainulator`. Tool names describe the operation:
66+
> **Distribution:** v2.0.0 is a [GitHub release](https://github.com/grainulation/grainulator/releases/tag/v2.0.0), not an npm registry release. For a separate local installation, follow the [archive installation guide](docs/INSTALLATION.md).
3067
31-
```js
32-
// MCP server: grainulator, tool: add_claim
33-
{
34-
"dir": ".",
35-
"id": "r001",
36-
"type": "constraint",
37-
"topic": "delivery",
38-
"content": "Do not tag the release before required CI checks pass.",
39-
"evidence": "stated"
40-
}
68+
### Connect your agent
69+
70+
From the project you want Grainulator to access:
71+
72+
```sh
73+
node /path/to/grainulator/bin/grainulator.js connect --dir "$PWD"
4174
```
4275

43-
In host interfaces that combine server and tool names, this appears as `grainulator.add_claim` or `mcp__grainulator__add_claim`.
76+
Register the printed MCP configuration in your host, then restart its connection. The command prints configuration; it does not change your host settings.
4477

45-
| Capability | Tools |
46-
| --- | --- |
47-
| Evidence | `init`, `add_claim`, `compile`, `search`, `status`, `resolve` |
48-
| Memory | `memory_search`, `memory_store`, `memory_list`, `memory_pull` |
49-
| Exports | `exports_convert`, `exports_formats`, `exports_preview` |
78+
For bundled skills, agents, and hooks, use the **[native plugin setup guide](docs/PLUGIN-TESTING.md)**. Native Codex requires an absolute `GRAINULATOR_WORKSPACE` in its process environment. CLI and direct MCP access remain available to other hosts.
5079

51-
The CLI equivalent is `grainulator add --dir <sprint> ...`. See [host setup](docs/HOSTS.md) and the [adapter contract](docs/ADAPTERS.md). External connectors are optional; local evidence operations do not require them.
80+
## Put it to work
5281

53-
## How work progresses
82+
With Grainulator connected, give your agent the outcome you need:
5483

55-
1. Investigate the question that matters to the requested outcome. Record supported findings with their sources and evidence tiers.
56-
2. Compile the ledger to surface material conflicts, weak evidence and missing perspectives. Resolve what can be resolved, and preserve honest limitations.
57-
3. Implement and verify the requested artifact. Run another investigation only when it can change a decision or close a relevant gap.
84+
> Use Grainulator to investigate whether we should migrate this service. Record the evidence, challenge the assumptions, implement the agreed changes, and verify them. Keep the remaining next steps split into Auto and Manual.
5885
59-
There are no fixed research-pass or claim-count quotas. A compiler result is evidence about the ledger, not proof that every claim is true or that the whole task is complete. Independent tests establish only what they actually check.
86+
The work follows a simple cycle:
6087

61-
Next actions appear as two concise lists:
88+
1. **Record** findings with their sources and evidence tiers.
89+
2. **Check** for conflicts, weak support, and missing perspectives.
90+
3. **Act** on the gaps that matter, then verify the requested result.
91+
4. **Continue** from the saved ledger or export the session to another workflow.
6292

63-
**Auto**
93+
There are no fixed claim-count or research-pass quotas. **Auto** lists work the agent can continue within your authorization. **Manual** lists decisions, access, or actions that need you. When you ask only for next steps, those two lists are the entire response.
6494

65-
- Work the agent can continue under existing authorization.
95+
<details>
96+
<summary><strong>Example: record a claim from the terminal</strong></summary>
6697

67-
**Manual**
98+
```sh
99+
node bin/grainulator.js init --dir ./sprints/migration \
100+
--question 'Should we migrate this service?' \
101+
--audience engineers --constraints 'Preserve existing user data' \
102+
--done 'A verified plan with remaining risks documented'
68103

69-
- Decisions, access or actions that require you; `None.` when there are none.
104+
node bin/grainulator.js add --dir ./sprints/migration \
105+
--id r001 --type constraint --topic migration \
106+
--content 'Existing user data must remain readable.' --evidence stated
70107

71-
The agent continues authorized Auto work. Compiler suggestions never grant permission or override the task’s scope. When you ask for next steps only, those two lists are the entire response.
108+
node bin/grainulator.js compile --dir ./sprints/migration
109+
```
72110

73-
## Playground and managed sessions
111+
The equivalent MCP tool is **`add_claim`** on the **`grainulator`** server. See the [tool reference](docs/TOOLS.md) for evidence, memory, export, analytics, and orchestration operations.
74112

75-
Run `npm run dev` and open the printed local URL. The research playground supports model and provider configuration, evidence controls, and portable session export/resume. See [research sessions](docs/RESEARCH.md) for configuration and continuation.
113+
</details>
76114

77-
`node bin/grainulator.js demo` exercises a deterministic adapter and verifier offline. It demonstrates the execution protocol; it is not evidence that a model produces better answers. See [evaluation results](docs/EVALUATION.md) for measured model behavior and limits.
115+
## Explore the docs
78116

79-
## Repository
117+
| Guide | Start here for… |
118+
| --- | --- |
119+
| [Installation](docs/INSTALLATION.md) | Tagged source, isolated archives, and verified build identity. |
120+
| [Agent setup](docs/PLUGIN-TESTING.md) | Claude Code, Codex, and actual plugin acceptance checks. |
121+
| [Research sessions](docs/RESEARCH.md) | Models, feature controls, credentials, export, and resume. |
122+
| [Tools](docs/TOOLS.md) | The canonical CLI and MCP interface. |
123+
| [Execution adapters](docs/ADAPTERS.md) | Attaching a model command and a task-specific verifier. |
124+
| [Architecture](docs/STRUCTURE.md) | The workspace layout and internal modules. |
125+
| [Evaluation](docs/EVALUATION.md) | What has been measured and what remains unproven. |
126+
| [Contributing](CONTRIBUTING.md) | Development setup, tests, and changes to the project. |
80127

81-
```text
82-
bin/ Public CLI
83-
lib/ Research, providers and execution loop
84-
packages/
85-
evidence/ Claims and compilation
86-
memory/ Source context and retrieval
87-
exports/ Documents and presentations
88-
analytics/ Sprint metrics and reports
89-
orchestration/ Sprint dependencies
90-
runtime/ Managed execution and verification
91-
shared/ Common utilities
92-
legacy-cli/ Compatibility commands
93-
skills/ Portable workflows
94-
agents/ Agent instructions
95-
hooks/ Host evidence reminders and write guard
96-
site/ Product site and playground
97-
scripts/ Previews and acceptance checks
98-
test/ Plugin and integration regressions
99-
evals/ Model evaluations
100-
```
128+
## Verification and limits
101129

102-
The permission dashboard has been removed. Native hosts own permissions and remote access. Grainulation’s organization site lives in its separate checkout. Retained internal package identifiers and accepted legacy tool aliases support existing integrations; they are not separate products. [Source provenance](docs/source-imports.json) records the imports.
130+
CI checks Node 24 and 25, isolated package installation, plugin contracts, Rust runtime conformance, lint, and the static playground in a browser. Native host and live-provider acceptance have separate [verification guides](docs/READINESS.md).
103131

104-
The single Grainulator package includes the consolidated components; separate ecosystem installations are not required.
132+
The compiler checks the structure and support recorded in the ledger; it does not establish that a source is true. Evaluations do not establish a general accuracy or efficiency gain, and per-pass limits are not a whole-session spending cap. Keep those distinctions when interpreting results.
105133

106-
## Verify from a source checkout
134+
<details>
135+
<summary><strong>Run the development checks</strong></summary>
107136

108137
```sh
109138
npm test
110139
npm run test:install
111140
npm run lint
112141
```
113142

114-
See the [dogfood guide](docs/DOGFOOD.md) for browser and runtime checks, and [readiness](docs/READINESS.md) for release acceptance. The GitHub release and locally packed archives do not publish an npm package.
143+
Browser and runtime prerequisites are in [CONTRIBUTING.md](CONTRIBUTING.md). The offline `node bin/grainulator.js demo` exercises the adapter/verifier protocol without a provider account.
115144

116-
## License
145+
</details>
117146

118-
MIT. See [LICENSE](LICENSE).
147+
---
119148

120-
Local dogfood uses Node 25 (`.nvmrc` / `.node-version`); Node 24 is the minimum supported runtime.
149+
<p align="center">
150+
Built by <a href="https://grainulation.com">Grainulation</a> ·
151+
<a href="LICENSE">MIT licensed</a> ·
152+
<a href="https://github.com/grainulation/grainulator/issues">Issues & ideas</a>
153+
</p>

0 commit comments

Comments
 (0)