Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
9 changes: 7 additions & 2 deletions DISTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ shipped yet.
| GitHub repository | Published | The canonical public source and collaboration surface is `xiaojiou176-open/movi-organizer`. |
| GitHub Releases | Published | GitHub Releases is the canonical release trail for this repository. |
| GitHub Pages | Published | GitHub Pages is the current public front door and discovery page. |
| Submission manifest | Published in-repo | [`manifest.yaml`](./manifest.yaml) is the repo-owned summary of current published vs submission-ready-unlisted surfaces. |

## Current Ready But Not Registry-Published

Expand All @@ -23,6 +24,8 @@ shipped yet.
| Source install from this repository | Ready | The repository ships Python package metadata and console entrypoints such as `movi-organizer`, `movi-web-api`, and `movi-mcp`. |
| Movi MCP v1 stdio server | Ready | The MCP surface is a local-first stdio integration that can be launched from this repository or an installed environment. |
| Codex / Claude Code setup docs | Ready | The repository ships setup pages for Codex and Claude Code, but those docs describe local wiring, not a separate public distribution channel. |
| Skills / agent bundle shelf | Submission-ready-unlisted | The repository now ships repo-owned skill bundle examples and install/proof notes without claiming a live skills registry listing. |
| OpenClaw / ClawHub bundle | Submission-ready-unlisted | The repository now ships an OpenClaw-facing bundle and proof note without claiming a live catalog entry. |

## Surfaces We Do Not Currently Claim As Published

Expand All @@ -31,8 +34,8 @@ shipped yet.
| PyPI | Not published | This repository does not currently claim an official PyPI release surface. |
| npm package | Not published | The root Node surface is a repo control surface, not a published npm package. |
| MCP registry | Not published | `Movi MCP v1` is documented as a local-first stdio surface, not a registry-published listing. |
| Skills registry | Not published | No official skills-registry distribution claim is made here. |
| Plugin marketplace | Not published | Strategy Packs are templates, not a plugin marketplace. |
| Skills registry | Not published | A repo-owned skills bundle exists, but no live registry listing is claimed. |
| Plugin marketplace | Not published | Agent/plugin bundle readiness exists, but no browser or plugin marketplace listing is claimed. |
| Chrome Web Store | Not published | No official Chrome Web Store distribution claim is made here. |

## Current Reading Rule
Expand All @@ -42,6 +45,8 @@ Use the surfaces above in this order:
1. GitHub repository for the public source of truth
2. GitHub Releases for release history
3. GitHub Pages for the current public landing route
4. `manifest.yaml` for the repo-owned submission summary
5. `examples/skills/README.md` and `examples/openclaw/README.md` for unlisted bundle surfaces

If you need to answer a stricter question such as "is the current head verified
as a published release," do not infer that from a tag alone. Use the release
Expand Down
14 changes: 10 additions & 4 deletions INTEGRATIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,19 @@ class, some are side entrances, and some are only comparison points.
| OpenHands | A real API and MCP substrate exists, but no dedicated first-party setup page or branded workflow is shipped. | Do not present it as a primary or secondary front-door integration. |
| OpenCode | Same honest boundary as OpenHands. | Do not present it as a primary or secondary front-door integration. |

## Not A Front-Door Fit Today
## Submission-Ready Unlisted Fit

| Surface | Why it is not front-door fit today |
| Surface | Why it is submission-ready-unlisted |
| :-- | :-- |
| OpenClaw / ClawHub | The repository now ships a dedicated integration note, starter bundle, and sample configs, but still refuses to claim a live listing. |
| Skills registry or plugin marketplaces | The repository now ships a repo-owned agent/plugin bundle, but still refuses to claim a live registry or browser marketplace listing. |

## Not Claimed As Live

| Surface | Why it is still not claimed as live |
| :-- | :-- |
| OpenClaw | The repository does not currently ship a dedicated integration surface or branded product flow for it. |
| MCP registry listings | The current story is local-first stdio MCP, not registry publication. |
| Skills registry or plugin marketplaces | The repository does not currently claim those as shipped integration channels. |
| Browser extension marketplaces | The new bundle is agent/plugin-ready, not a Chrome Web Store or browser-extension listing. |

## Safety Boundary

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Movi is a review-first local file organizer and workbench for messy photos, screenshots, documents, and audio. It lets AI assist with the manifest first, then lets you inspect, label, and approve the plan before deterministic `apply` or `rollback` touches your files.

[Safe First Look](#safe-first-look) · [10-Second Tour](#10-second-tour) · [Good Fit / Not A Fit](#good-fit--not-a-fit) · [Public Proof](docs/public_proof.md) · [Docs](docs/index.md) · [Distribution](DISTRIBUTION.md) · [Integrations](INTEGRATIONS.md) · [Browser Surface](#browser-surface) · [Releases](https://github.com/xiaojiou176-open/movi-organizer/releases) · [Discussions](https://github.com/xiaojiou176-open/movi-organizer/discussions) · [Security](SECURITY.md) · [Movi MCP v1](docs/mcp.md) · [Codex Integration](docs/codex_mcp.md) · [Claude Code Integration](docs/claude_code_mcp.md) · [Developer Guide](docs/developer_guide.md)
[Safe First Look](#safe-first-look) · [10-Second Tour](#10-second-tour) · [Good Fit / Not A Fit](#good-fit--not-a-fit) · [Public Proof](docs/public_proof.md) · [Docs](docs/index.md) · [Distribution](DISTRIBUTION.md) · [Integrations](INTEGRATIONS.md) · [Submission Manifest](manifest.yaml) · [Skills Bundle](examples/skills/README.md) · [OpenClaw Bundle](examples/openclaw/README.md) · [Browser Surface](#browser-surface) · [Releases](https://github.com/xiaojiou176-open/movi-organizer/releases) · [Discussions](https://github.com/xiaojiou176-open/movi-organizer/discussions) · [Security](SECURITY.md) · [Movi MCP v1](docs/mcp.md) · [Codex Integration](docs/codex_mcp.md) · [Claude Code Integration](docs/claude_code_mcp.md) · [Developer Guide](docs/developer_guide.md)

![Movi overview showing mixed files flowing into manifest review and organized output](docs/assets/storefront/hero-movi-overview.svg)

Expand Down Expand Up @@ -68,7 +68,7 @@ Current honest ecosystem fit:
- **Primary fit**: Codex and Claude Code, because `Movi MCP v1` already ships as a local-first stdio surface with review-safe tools
- **Secondary ecosystem fit**: Cursor and other local MCP-capable clients, because the transport and tool surface already match their integration model
- **Comparison-only fit**: OpenHands and OpenCode, because the repo has a real MCP and API substrate they can consume, but no dedicated first-party setup surface or branded workflow yet
- **Not a front-door fit today**: OpenClaw, because the repo does not currently ship a tailored integration surface or branded product claim for it
- **Submission-ready-unlisted fit**: OpenClaw and ClawHub, because the repo now ships a dedicated bundle, install/proof notes, and agent-facing starter surfaces without claiming a live listing

## 10-Second Tour

Expand Down
10 changes: 10 additions & 0 deletions contracts/governance/code_scanning_alert_allowlist.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 1
status: active
reason: >
2026-04-08 final distribution prep accepts three GitHub Scorecard governance
findings as temporary non-blockers while keeping all other code-scanning,
dependency, and secret findings blocking.
accepted_rule_ids:
- CIIBestPracticesID
- MaintainedID
- CodeReviewID
6 changes: 6 additions & 0 deletions contracts/governance/public_readiness_policy.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
version: 1
default_branch: main
accepted_code_scanning_rules_contract: contracts/governance/code_scanning_alert_allowlist.yaml
required_repo_surface_files:
- .nvmrc
- LICENSE
- NOTICE
- THIRD_PARTY_NOTICES.md
- SECURITY.md
- CONTRIBUTING.md
- DISTRIBUTION.md
- INTEGRATIONS.md
- manifest.yaml
- SUPPORT.md
- CODE_OF_CONDUCT.md
- .github/CODEOWNERS
Expand All @@ -24,6 +27,9 @@ required_repo_surface_files:
- docs/mcp.md
- docs/developer_guide.md
- docs/review_first_ai_file_organizer.md
- examples/skills/README.md
- examples/skills/SKILL.md
- examples/openclaw/README.md
required_package_scripts:
- release:draft
- security:history-scan
Expand Down
3 changes: 3 additions & 0 deletions contracts/governance/public_surface.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
version: 1
public_docs:
- README.md
- manifest.yaml
- AGENTS.md
- CLAUDE.md
- LICENSE
Expand All @@ -14,6 +15,8 @@ public_docs:
- CODE_OF_CONDUCT.md
- docs/usage.md
- docs/architecture.md
- examples/skills/README.md
- examples/openclaw/README.md
public_doc_globs:
- apps/**/AGENTS.md
- apps/**/CLAUDE.md
Expand Down
7 changes: 7 additions & 0 deletions contracts/governance/root_allowlist.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ canonical_tracked_entries:
- .env.example
- .github
- .gitignore
- .nvmrc
- .pre-commit-config.yaml
- AGENTS.md
- CHANGELOG.md
Expand All @@ -22,6 +23,8 @@ canonical_tracked_entries:
- apps
- contracts
- docs
- examples
- manifest.yaml
- ops
- package-lock.json
- package.json
Expand Down Expand Up @@ -52,6 +55,7 @@ entry_purposes:
.env.example: runtime env template
.github: CI workflows and automation
.gitignore: repository hygiene ignore contract
.nvmrc: local Node major-line pin for operator and CI parity
.pre-commit-config.yaml: local hook contract
.runtime-cache: the only repo-side runtime noise root
.serena: repo-local Serena caches and project metadata that must remain untracked
Expand All @@ -71,6 +75,8 @@ entry_purposes:
apps: repo entry applications
contracts: machine-enforced contracts and governance truth
docs: repo-level human documentation
examples: submission-ready public bundle examples and install packets
manifest.yaml: top-level submission manifest for public distribution truth
ops: operational collateral
package-lock.json: root workspace node lock
package.json: root workspace scripts
Expand All @@ -83,6 +89,7 @@ required_non_empty_dirs:
- apps
- contracts
- docs
- examples
- ops
- packages
- tests
Expand Down
12 changes: 12 additions & 0 deletions contracts/governance/root_change_control.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ entries:
owner: repo
change_class: hygiene
approval_rule: architecture-review
.nvmrc:
owner: repo
change_class: public-config
approval_rule: architecture-review
.pre-commit-config.yaml:
owner: repo
change_class: policy
Expand Down Expand Up @@ -112,6 +116,14 @@ entries:
owner: repo
change_class: canonical-root
approval_rule: architecture-review
examples:
owner: repo
change_class: canonical-root
approval_rule: architecture-review
manifest.yaml:
owner: repo
change_class: public-doc
approval_rule: architecture-review
ops:
owner: repo
change_class: canonical-root
Expand Down
30 changes: 15 additions & 15 deletions docs/_generated/render_state.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"ops/compose/docker-compose.yml": "9f3f0a6047c30cc93374b41a2b0acbf5563b5b461812efac90e4e6e9da9a693c",
"contracts/governance/governance.defaults.env": "cddb6b33f746b32509f8a49af1f11bef945d0eeaf060028da41c726127d68660",
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827",
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
},
"output_hash": "35f928f34d5157b2764465e28ea00c4e234354342d4d26cc1164f9231eebf20d"
Expand All @@ -58,14 +58,14 @@
"block_id": null,
"source_hashes": {
"contracts/governance/done_signal_policy.yaml": "16e2fc2add45a68406d6a6077ed7b912fe2406905bf1ff68e967bceeda4bd83c",
"contracts/governance/public_readiness_policy.yaml": "1207163d53fb898d20faee2a65d66ee9f29fedd29115364497d9c5ec03c3a7eb",
"contracts/governance/public_readiness_policy.yaml": "eacf27c9d50b2c4295abddecddc23c83f9302140cf82bbd26cd0070cf18ce835",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
},
"output_hash": "774d8eaecbd42c0759da5b26cdfede0e5255f9e9d7c35b5d0e163ff9e58935c7"
"output_hash": "b87dbaba30da2a7478fb1870192748b312367579f91832025a2be12458f9ccba"
},
{
"id": "root-web-api-routes",
Expand All @@ -76,7 +76,7 @@
"source_hashes": {
"contracts/api/web_api.openapi.yaml": "c97830844b65fd8f76cd23688187ca8648835d787d1819045882dea01e1d7b64"
},
"output_hash": "0f570bc328a43eff72145d98195fe8a906244ad34388f46d0cfc9a50fefa6c70"
"output_hash": "c0edfeff801744050b9f8e0b7661f30a4ab0f6667c5d987e24ac7eb1ad56f869"
},
{
"id": "root-runtime-topology",
Expand All @@ -88,10 +88,10 @@
"ops/compose/docker-compose.yml": "9f3f0a6047c30cc93374b41a2b0acbf5563b5b461812efac90e4e6e9da9a693c",
"contracts/governance/governance.defaults.env": "cddb6b33f746b32509f8a49af1f11bef945d0eeaf060028da41c726127d68660",
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827",
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
},
"output_hash": "0f570bc328a43eff72145d98195fe8a906244ad34388f46d0cfc9a50fefa6c70"
"output_hash": "c0edfeff801744050b9f8e0b7661f30a4ab0f6667c5d987e24ac7eb1ad56f869"
},
{
"id": "root-ci-governance-summary",
Expand All @@ -104,9 +104,9 @@
".github/workflows/reusable-build-runtime-image.yml": "0b79722ad922ec45ce8eb62c2466834855aebb9915f86a8ff65a25b71ebf5793",
".github/workflows/nightly-drift-audit.yml": "485f3ee338c8c951e92047ff1bf600379eebb8a3265c1ded542bd95caad7770c",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc"
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827"
},
"output_hash": "0f570bc328a43eff72145d98195fe8a906244ad34388f46d0cfc9a50fefa6c70"
"output_hash": "c0edfeff801744050b9f8e0b7661f30a4ab0f6667c5d987e24ac7eb1ad56f869"
},
{
"id": "root-release-identity",
Expand All @@ -117,7 +117,7 @@
"source_hashes": {
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495"
},
"output_hash": "0f570bc328a43eff72145d98195fe8a906244ad34388f46d0cfc9a50fefa6c70"
"output_hash": "c0edfeff801744050b9f8e0b7661f30a4ab0f6667c5d987e24ac7eb1ad56f869"
},
{
"id": "script-readme-web-api-routes",
Expand All @@ -140,7 +140,7 @@
"ops/compose/docker-compose.yml": "9f3f0a6047c30cc93374b41a2b0acbf5563b5b461812efac90e4e6e9da9a693c",
"contracts/governance/governance.defaults.env": "cddb6b33f746b32509f8a49af1f11bef945d0eeaf060028da41c726127d68660",
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827",
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
},
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
Expand All @@ -156,7 +156,7 @@
".github/workflows/reusable-build-runtime-image.yml": "0b79722ad922ec45ce8eb62c2466834855aebb9915f86a8ff65a25b71ebf5793",
".github/workflows/nightly-drift-audit.yml": "485f3ee338c8c951e92047ff1bf600379eebb8a3265c1ded542bd95caad7770c",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc"
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827"
},
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
},
Expand All @@ -179,7 +179,7 @@
"block_id": "script-readme-governance-truth",
"source_hashes": {
"contracts/governance/done_signal_policy.yaml": "16e2fc2add45a68406d6a6077ed7b912fe2406905bf1ff68e967bceeda4bd83c",
"contracts/governance/public_readiness_policy.yaml": "1207163d53fb898d20faee2a65d66ee9f29fedd29115364497d9c5ec03c3a7eb",
"contracts/governance/public_readiness_policy.yaml": "eacf27c9d50b2c4295abddecddc23c83f9302140cf82bbd26cd0070cf18ce835",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
Expand Down Expand Up @@ -209,7 +209,7 @@
"ops/compose/docker-compose.yml": "9f3f0a6047c30cc93374b41a2b0acbf5563b5b461812efac90e4e6e9da9a693c",
"contracts/governance/governance.defaults.env": "cddb6b33f746b32509f8a49af1f11bef945d0eeaf060028da41c726127d68660",
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495",
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
"package.json": "4b9bfb8aac66c5c9101b56af866932d5a27a2b1b912b01439905155a09cd6827",
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
},
"output_hash": "c0cb776be4feeaa4d6517d934e2d4f541ae1a04d66350c7bd82da6b009f710b4"
Expand All @@ -222,7 +222,7 @@
"block_id": "architecture-governance-truth",
"source_hashes": {
"contracts/governance/done_signal_policy.yaml": "16e2fc2add45a68406d6a6077ed7b912fe2406905bf1ff68e967bceeda4bd83c",
"contracts/governance/public_readiness_policy.yaml": "1207163d53fb898d20faee2a65d66ee9f29fedd29115364497d9c5ec03c3a7eb",
"contracts/governance/public_readiness_policy.yaml": "eacf27c9d50b2c4295abddecddc23c83f9302140cf82bbd26cd0070cf18ce835",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
Expand All @@ -239,7 +239,7 @@
"block_id": "open-source-platform-truth",
"source_hashes": {
"contracts/governance/done_signal_policy.yaml": "16e2fc2add45a68406d6a6077ed7b912fe2406905bf1ff68e967bceeda4bd83c",
"contracts/governance/public_readiness_policy.yaml": "1207163d53fb898d20faee2a65d66ee9f29fedd29115364497d9c5ec03c3a7eb",
"contracts/governance/public_readiness_policy.yaml": "eacf27c9d50b2c4295abddecddc23c83f9302140cf82bbd26cd0070cf18ce835",
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
Expand Down
Loading
Loading