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
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 0.1.18 — 2026-10-05

Rilis fitur Wave 0.1.18 untuk penambahan modul `penulis-ilmiah` melalui eksepsi unfreeze resmi katalog (Option B: 65 → 66 skill, 51 model-invoked + 15 manual, tanpa pensiun twin). Closed intents diperluas dari 25 menjadi 26 (`penulis_ilmiah`).

- **Eksepsi Pertumbuhan Katalog Resmi (Option B: 65 → 66)**:
- Katalog OpenCodeHighEnd di-unfreeze dari 65 menjadi 66 nama dengan menambahkan skill model-invoked `penulis-ilmiah` di `vendor/skill-allowlist.txt` dan `vendor/skill-policy.json`.
- Tidak ada twin yang dipensiunkan (*no twin retired*), serupa dengan preseden pertumbuhan terkelola pada rilis 0.1.7.
- Closed intents pada `templates/AGENTS.md`, `rules/00-routing.md`, dan `docs/routing.md` bertambah dari 25 menjadi 26 dengan pendaftaran intent `penulis_ilmiah` yang memetakan secara langsung ke skill `penulis-ilmiah`.
- **Skill `penulis-ilmiah` (`skills/penulis-ilmiah/`)**:
- Didedikasikan untuk penulisan dan penyuntingan draf naskah ilmiah Bahasa Indonesia berstandar EYD V dan kata baku KBBI untuk esai, bab skripsi, artikel jurnal nasional (SINTA), proposal lomba, dan abstrak Scopus dengan verifikasi rujukan mutlak (*fail-closed* / anti-halu sitasi).
- Dilengkapi basis pengetahuan operasional pada `references/`: kaidah EYD V lengkap (`eyd/`), pasangan kata baku KBBI (`kata_baku.md`), panduan struktur dan gaya penulisan ilmiah (`gaya_tulisan.md`), aturan format sitasi APA 7th & IEEE (`gaya_sitasi.md`), serta frasa klise AI yang dilarang (`frasa_terlarang.md`).
- **Server MCP First-Party `mcp/penulis-ilmiah/`**:
- Paket TypeScript mandiri (Node.js 20+) berbasis `@modelcontextprotocol/sdk` dan transport lokal stdio (dilarang menggunakan flag jaringan `--http`, `0.0.0.0`, atau docker).
- Menyediakan 5 tools terintegrasi: `cek_ejaan` (heuristik penulisan kata depan menempel, imbuhan pasif dipisah, spasi tanda baca, elipsis, integrasi opsional Hunspell `id_ID`), `cek_baku` (validasi kata baku KBBI per-kata dengan cache lokal 30 hari `~/.cache/penulis-ilmiah/kbbi-cache.json` dan rate limit online default 20/menit), `cari_rujukan` (pencarian publikasi ke Crossref, OpenAlex, Semantic Scholar), `verifikasi_rujukan` (validasi DOI Crossref, skor kemiripan judul, pengarang, tahun, dan keaktifan URL dengan status `VALID`, `TIDAK_COCOK`, `TIDAK_DITEMUKAN`), serta `format_sitasi` (pemformatan APA 7th dan IEEE dengan proteksi `wajib_terverifikasi` yang menolak memformat rujukan non-`VALID`).
- **Integrasi CLI & Diagnostik OCH**:
- Perintah CLI `opencode-he penulis-ilmiah {enable,disable}` untuk mengaktifkan/menonaktifkan MCP server `penulis-ilmiah` secara bedah (*surgical config update*).
- Didaftarkan sebagai optional MCP pada `vendor/sources.json` dan status `FOREIGN_ON_DEMAND` pada `vendor/mcp-wanted.json` (dengan transport policy stdio pada `vendor/mcp-policy.json`).
- Diagnostik `opencode-he doctor` mendeteksi konfigurasi valid sebagai `CONFIGURED`, status belum aktif sebagai `OPTIONAL_ABSENT`, dan menolak spesifikasi berbahaya (seperti `0.0.0.0` atau `--http`) sebagai `FAIL`.
- **Versi Produk**: Bump versi ke `0.1.18`.

## 0.1.17 — 2026-10-04

Rilis sinkronisasi Wave 0.1.17 untuk pembaruan penuh aset anti-slop ke commit HEAD upstream `dmmulroy/anti-slop@c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b` (label versi `0.1.2+c44ef22 (untagged main, post-v0.1.2)`). Katalog tetap 65 (50 model + 15 manual). Closed intents tetap 25. Tidak ada penambahan atau pensiun skill (`vendor/skill-allowlist.txt` dan `vendor/skill-policy.json` tidak berubah).
Expand Down
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# OpenCodeHighEnd

OpenCode 2 overlay: 65 frozen routed skills, thin `AGENTS.md`, `opencode-he`.
OpenCode 2 overlay: 66 frozen routed skills, thin `AGENTS.md`, `opencode-he`.

Installer and runtime overlay for [OpenCode 2](https://opencode.ai/v2/docs/).

Version **0.1.17**. The 65-skill catalog is strictly frozen.
Version **0.1.18**. The 66-skill catalog is strictly frozen.

## What it is

- 65 skills: 50 model-invoked, 15 manual slash commands (frozen; see [docs/CATALOG-FREEZE.md](docs/CATALOG-FREEZE.md))
- A thin `AGENTS.md` router (lazy, one primary specialist, 25 closed intents)
- 66 skills: 51 model-invoked, 15 manual slash commands (frozen; see [docs/CATALOG-FREEZE.md](docs/CATALOG-FREEZE.md))
- A thin `AGENTS.md` router (lazy, one primary specialist, 26 closed intents)
- Core MCP: Codebase Memory (dual CLI and MCP graph adapters), Context7, shadcn
- 12 Universal Design Banks + Operator Banks (34,700+ items across Identity, Motion, Section, Atomic, and Oversight) with zero-token local search & Google Drive v3 bootstrap
- Design Bank path resolution via `~/.config/opencode/highend/config/design-bank.json`
Expand Down Expand Up @@ -38,6 +38,16 @@ Version **0.1.17**. The 65-skill catalog is strictly frozen.
- Not OpenCode 1.x (installer fails closed on 1.x)
- Not claimed as macOS/Windows-tested (Linux x86_64 only for this release)

## What's new in 0.1.18

- **Official Catalog Unfreeze Exception (Option B: 65 → 66)**: Managed catalog growth from 65 to 66 skills (51 model-invoked + 15 manual slash commands) with no twin retired (`vendor/skill-allowlist.txt`, `docs/CATALOG-FREEZE.md`).
- **Closed Intent Expansion (25 → 26)**: Added `penulis_ilmiah` closed intent routing directly to `penulis-ilmiah` in `templates/AGENTS.md` (budget 72 lines ≤ 120), `rules/00-routing.md`, and `docs/routing.md`.
- **Skill `penulis-ilmiah` (`skills/penulis-ilmiah/`)**: Indonesian academic writing specialist for skripsi, SINTA journals, essays, and proposals with comprehensive knowledge references for EYD V (`references/eyd/`), KBBI standard word pairs (`references/kata_baku.md`), and forbidden AI clichés (`references/frasa_terlarang.md`).
- **First-Party TypeScript stdio MCP (`mcp/penulis-ilmiah/`)**: Standalone stdio MCP server (Node ≥20) providing 5 tools: `cek_ejaan`, `cek_baku`, `cari_rujukan`, `verifikasi_rujukan`, and `format_sitasi`. Strictly non-networked local stdio transport (no `--http`, no `0.0.0.0`).
- **Fail-Closed Citation Integrity**: `format_sitasi` enforces `wajib_terverifikasi: true` by rejecting unverified references with error code `REF_NOT_VERIFIED`.
- **CLI & Doctor Integration**: `opencode-he penulis-ilmiah {enable,disable}` provides parse-aware surgical config updates; `doctor` validates safe stdio configuration (`CONFIGURED`), reports `OPTIONAL_ABSENT` when not enabled, and flags invalid/network bindings as `FAIL`.
- **Test Coverage**: 410 unit/integration tests passing cleanly without pre-compiled artifacts, plus clean idempotency and install verification.

## What's new in 0.1.13

- **Upstream Pins & MCP Modernization**: Core MCP `shadcn` bumped to `4.21.1`; `@reticlehq/server` pinned to `3.5.0`; `markitdown-mcp` pinned to `0.0.1a7` with `markitdown[all]==0.1.8`; `crawl4ai` standardized to `/mcp/sse` endpoint; `context7-mcp` shadow detection added to doctor.
Expand Down Expand Up @@ -158,7 +168,7 @@ Default: repository evidence first. Then at most one specialist.
| TS Oxlint install | `install-anti-slop` (explicit only) |
| Architecture bake-off | `/architect` (manual) |

Warehouse: `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, `click-path-audit` (plus Wave 2 diagnostics). Wave 0.1.7 additions: `json-render` (generative UI from typed catalogs), `deck-design` (consulting-grade PPTX & 16:9 HTML slide decks), `pageindex` (vectorless tree-reasoning long document navigation). Wave 0.1.8 additions: `business-motion-film` (commercial launch films; retires `img2threejs`), `ninerouter` (multi-provider gateway stub; retires `prompt-optimizer`). Wave 0.1.9 body-only: merges `kaventro/motion-designer` into `business-motion-film` (product-film doctrine for real app UI; catalog strictly 65/65). Wave 0.1.10: `found-this-design` indexes Oversight Supply and the Design Bank bootstrap pin moves to DesignBank v3; pstack selected-skill provenance moves to `23e4138` (0.15.6) with host adaptation (`poteto-mode` rejected). Wave 0.1.11 body-only: adds `web_research` closed intent to `research` with `references/web-data.md`; Scrapling optional MCP; Agent-Reach pointer-only host tool; catalog strictly 65/65. Wave 0.1.12 body-only: `hyperframes` v0.8.119 refresh (declarative data attributes, CLI render); `awesome-opus5-5-videos` POINTER_ONLY prompt patterns; Matt cluster `GLOSSARY.md` migration; `humanizer` v3.1.0; catalog strictly 65/65.
Warehouse: `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, `click-path-audit` (plus Wave 2 diagnostics). Wave 0.1.7 additions: `json-render` (generative UI from typed catalogs), `deck-design` (consulting-grade PPTX & 16:9 HTML slide decks), `pageindex` (vectorless tree-reasoning long document navigation). Wave 0.1.8 additions: `business-motion-film` (commercial launch films; retires `img2threejs`), `ninerouter` (multi-provider gateway stub; retires `prompt-optimizer`). Wave 0.1.9 body-only: merges `kaventro/motion-designer` into `business-motion-film` (product-film doctrine for real app UI; catalog strictly 65/65). Wave 0.1.10: `found-this-design` indexes Oversight Supply and the Design Bank bootstrap pin moves to DesignBank v3; pstack selected-skill provenance moves to `23e4138` (0.15.6) with host adaptation (`poteto-mode` rejected). Wave 0.1.11 body-only: adds `web_research` closed intent to `research` with `references/web-data.md`; Scrapling optional MCP; Agent-Reach pointer-only host tool; catalog strictly 65/65. Wave 0.1.12 body-only: `hyperframes` v0.8.119 refresh (declarative data attributes, CLI render); `awesome-opus5-5-videos` POINTER_ONLY prompt patterns; Matt cluster `GLOSSARY.md` migration; `humanizer` v3.1.0; catalog strictly 65/65. Wave 0.1.18 unfreeze exception: Option B explicit catalog growth from 65 to 66 names (51 model-invoked + 15 manual) and 26 closed intents (`penulis_ilmiah`), adding `penulis-ilmiah` and first-party stdio MCP `mcp/penulis-ilmiah`.

Examples: interactive product story told by scroll → `scroll-craft`. Unbroken camera through a miniature factory → `scroll-world`. Clean security dashboard → `impeccable`. Video, image generation, and Design V2 stay optional.

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.17
0.1.18
7 changes: 4 additions & 3 deletions docs/CATALOG-FREEZE.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Catalog Freeze Contract

This contract defines the immutable boundary and governance for the OpenCodeHighEnd catalog. The 65-skill catalog is strictly frozen.
This contract defines the immutable boundary and governance for the OpenCodeHighEnd catalog. The 66-skill catalog is strictly frozen.

- **Product version**: 0.1.17
- **Catalog**: 65 names. 50 model-invoked under `skills/`. 15 manual under `manual-skills/` + `commands/`.
- **Product version**: 0.1.18
- **Catalog**: 66 names. 51 model-invoked under `skills/`. 15 manual under `manual-skills/` + `commands/`.
- **Wave 0.1.18 unfreeze exception** (CHANGELOG 0.1.18): Option B explicit catalog growth from 65 to 66 names (51 model-invoked + 15 manual) to add first-party model-invoked skill `penulis-ilmiah` for Bahasa Indonesia academic drafting (EYD V, KBBI standard words, and fail-closed citation verification). No twin retired. Closed intent expanded from 25 to 26 (`penulis_ilmiah`). Accompanied by first-party stdio MCP server `mcp/penulis-ilmiah` added as `FOREIGN_ON_DEMAND` via `opencode-he penulis-ilmiah enable`. (Spent).
- **Wave 0.1.17 body-only**: catalog strictly frozen at 65 (50 model + 15 manual). Zero catalog growth. No new exceptions. Upstream anti-slop full synchronization to `dmmulroy/anti-slop@c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b` (version `0.1.2+c44ef22`): vendored 38 assets byte-identical to upstream tree (18 generic rules, 5 Effect rules, shared helpers, and upstream-adapted eslint-stylistic padding rules under MIT); reconciled profiles (recommended stays 4 high-signal assertions; strict expanded to 18 generic rules plus companion native `oxc/no-accumulating-spread`; effect expanded to 5 rules); converted `manage.mjs update` to non-destructive dry-run review per upstream `references/update.md` merge doctrine (requiring `--force` to mutate live files) with per-name `jsPlugins` merging; restored `scripts/install.mjs` byte-identical to upstream (`db1f155b`); added `vendor/licenses/ESLINT-STYLISTIC-MIT.txt` and comprehensive notices.
- **Wave 0.1.16 body-only**: catalog strictly frozen at 65 (50 model + 15 manual). Zero catalog growth. No new exceptions. Post-release correction and Playwright emulation refinement: restored c44ef22 upstream deferral record in docs/source-wave.md and corrected attribution of anti-slop asset synchronization (restoring 0.1.0 local drift to upstream e8c4880, not fixing upstream); documented mandatory permissions array for Playwright QA geolocation emulation and clarified runtime split (cross-browser grantPermissions/setGeolocation vs Chromium CDP timezone/locale overrides).
- **Wave 0.1.15 body-only**: catalog strictly frozen at 65 (50 model + 15 manual). Zero catalog growth. No new exceptions. Upstream sync and hygiene: synchronized vendored Oxlint ruleset assets in `skills/install-anti-slop` from `dmmulroy/anti-slop@e8c4880471b23ab7f216fba7b27d173a6ef07d4c` (v0.1.2) restoring upstream no-widen-then-assert.ts (local drift since 0.1.0); standardized Playwright QA timezone/locale/geolocation emulation doctrine with `.playwright/cli.config.json` context options as primary cross-browser method and `run-code` as Chromium CDP runtime alternative; removed dead imports `repo_root` from `lib/design_v2/bootstrap.py` and `tarfile` from `tests/test_design_bootstrap.py`.
Expand Down
3 changes: 3 additions & 0 deletions docs/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Optional:
- `markitdown` — `opencode-he markitdown enable` (local stdio via `uvx --from markitdown-mcp==0.0.1a7 --with markitdown[all]==0.1.8 markitdown-mcp`; Markdown ingest only)
- `crawl4ai` — `opencode-he crawl4ai enable` (remote HTTP `http://127.0.0.1:11235/mcp/sse`; cloud via `--cloud` with `{env:CRAWL4AI_KEY}`)
- `scrapling` — `opencode-he scrapling enable` (local stdio via `uvx --from scrapling[ai]==0.4.15 scrapling mcp`; structured web scraping)
- `penulis-ilmiah` — `opencode-he penulis-ilmiah enable` (local stdio via `npx tsx mcp/penulis-ilmiah/src/index.ts`; Indonesian academic writing, EYD V, KBBI standard words, and verified citations)
- `exa` — foreign; never add/remove/overwrite

Merge is parse-aware. Comment-free JSON is rewritten with `json.dumps`. JSONC with comments is patched surgically (owned MCP keys only). If surgical merge cannot be verified, install fails closed instead of destroying comments.
Expand All @@ -41,6 +42,8 @@ Doctor reports `CONFIGURED` for owned MCP entries present in config. That is not

`opencode-he scrapling enable` configures Scrapling as an optional local stdio MCP (`uvx --from scrapling[ai]==0.4.15 scrapling mcp`). It is `FOREIGN_ON_DEMAND` for structured web scraping and element extraction, not exploratory browser QA (which remains `playwright-qa`). Local stdio only: never `--http`, never bind `0.0.0.0`, never docker bind-all. Do not run `scrapling install` as it invokes `playwright install-deps` with sudo. The scraper is not vendored into `lib/`. `opencode-he scrapling disable` surgically removes only the scrapling server key. Absent is not a doctor failure; a malformed entry (including `--http` / `0.0.0.0`) fails closed.

`opencode-he penulis-ilmiah enable` configures the first-party `penulis-ilmiah` local stdio MCP (`npx tsx mcp/penulis-ilmiah/src/index.ts`). It is `FOREIGN_ON_DEMAND` for Indonesian academic drafting, EYD V spelling checks, KBBI standard words validation, and fail-closed citation verification against Crossref, OpenAlex, and Semantic Scholar. Local stdio only: `--http`, `0.0.0.0`, and docker bind-all are strictly forbidden. Polite Crossref access is configured via `{env:CROSSREF_MAILTO}`. `opencode-he penulis-ilmiah disable` surgically removes only the penulis-ilmiah server key. Absent is not a doctor failure; a malformed entry fails closed.

## Evaluated, Skipped & Rejected

- **Scrapling (`D4Vinci/Scrapling`)** — Promoted to `FOREIGN_ON_DEMAND` optional local stdio MCP in Wave 0.1.11 via `opencode-he scrapling enable` (pinned `0.4.15`). Not a core MCP; not vendored. Stdio only; `--http` and `0.0.0.0` forbidden. Never run `scrapling install`.
Expand Down
Loading
Loading