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

## 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).

- **Sinkronisasi penuh aset anti-slop (c44ef22)**: Menyinkronkan seluruh 38 berkas aset linter Oxlint di `skills/install-anti-slop/assets/anti-slop` secara byte-identik dari upstream snapshot `c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b` (15 berkas baru, 5 berkas diperbarui, 18 berkas identik). Termasuk penambahan 3 aturan generik baru (`no-array-filter-map`, `no-reduce-accumulator-copy`, `require-readable-spacing`), 4 aturan Effect baru (`no-manual-effect-error-tag`, `no-manual-tag-comparison`, `no-manual-tagged-construction`, `prefer-effect-match`), modul pembantu `shared/array-method.ts` dan `shared/scope.ts`, serta adaptasi upstream dari `eslint-stylistic` (tag `v6.0.0-beta.6`, MIT).
- **Rekonsiliasi profil dan aturan**:
- Profil `recommended` dipertahankan pada 4 aturan asersi keamanan tipe berkekuatan sinyal tinggi (`no-chained-type-assertions`, `no-widen-then-assert`, `no-known-value-widening`, `require-safety-comment-for-type-assertion`), tanpa memasukkan `require-readable-spacing` demi menghindari bentrok dengan formatter eksternal.
- Profil `strict` diperluas menjadi 18 aturan generik plus aturan bawaan companion `"oxc/no-accumulating-spread": "error"`.
- Grup aturan `effect` diperluas menjadi 5 aturan arsitektural Effect.
- **Mode update non-destruktif dan perbaikan skrip**:
- Mode `update` pada `scripts/manage.mjs` diubah menjadi non-destruktif mengikuti doktrin upstream `references/update.md`: melakukan perbandingan staged dry-run dan mencetak klasifikasi per berkas (`[ADD]`, `[CHANGE]`, `[SAME]`, `[LOCAL-ONLY]`) tanpa memutasi repositori, serta mewajibkan bendera `--force` untuk menerapkan perubahan.
- Penggabungan konfigurasi `jsPlugins` pada `.oxlintrc.json` kini dilakukan per entri `name` guna mencegah penimpaan plugin pihak ketiga yang sudah ada.
- Berkas `scripts/install.mjs` dikembalikan ke status byte-identik upstream (`db1f155bd15c065ddb6024042dea7ca4992551b2`).
- Berkas panduan `references/update.md` disertakan byte-identik dari upstream (`b2e7f6751a7a97406b768ed5bf950d883c17e9a6`).
- **Atribusi lisensi dan provenance**: Menambahkan salinan lisensi MIT untuk `eslint-stylistic` di `vendor/licenses/ESLINT-STYLISTIC-MIT.txt`, memperbarui `skills/install-anti-slop/NOTICE.md`, `THIRD_PARTY_NOTICES.md`, `vendor/sources.json`, `vendor/provenance.json`, `vendor/license-audit.json`, serta mengubah disposisi `anti-slop` di `docs/source-wave.md` menjadi `**SYNCED**`.
- **Versi Produk**: Bump versi ke `0.1.17` (`VERSION`, `vendor/sources.json`, `vendor/provenance.json`, `vendor/license-audit.json`, `README.md`, `docs/CATALOG-FREEZE.md`).

## 0.1.16 — 2026-10-04

Patch koreksi pasca-0.1.15 untuk atribusi aset anti-slop, pemulihan catatan penundaan upstream c44ef22, dan penyempurnaan emulasi Playwright QA (permissions geolokasi). 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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ OpenCode 2 overlay: 65 frozen routed skills, thin `AGENTS.md`, `opencode-he`.

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

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

## What it is

Expand Down
3 changes: 2 additions & 1 deletion THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ Machine-readable copy: `vendor/license-audit.json`.
| `scroll-craft` | [nateherkai/scroll-craft](https://github.com/nateherkai/scroll-craft) `75d81f7` — `vendor/licenses/NATEHERK-SCROLL-CRAFT-MIT.txt`; skill `NOTICE.md` | MIT © 2026 Nate Herk | follow MIT |
| `playwright-qa` | [microsoft/playwright-cli](https://github.com/microsoft/playwright-cli) `b85c7a7` — `vendor/licenses/MICROSOFT-PLAYWRIGHT-CLI-APACHE2.txt`; skill `NOTICE.md` | Apache-2.0 © Microsoft Corporation | follow Apache-2.0 |
| `taste-guard` | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) `ccbc156` — `vendor/licenses/LEONXLNX-TASTE-MIT.txt`; integrated in Impeccable | MIT © 2026 Leonxlnx | follow MIT |
| `install-anti-slop` | [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) `e8c4880` — `vendor/licenses/DMMULROY-ANTI-SLOP-MIT.txt`; skill `NOTICE.md` (updated with `update` mode) | MIT © 2026 Dillon Mulroy | follow MIT |
| `install-anti-slop` | [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) `c44ef22` — `vendor/licenses/DMMULROY-ANTI-SLOP-MIT.txt`; skill `NOTICE.md` (updated with `update` mode) | MIT © 2026 Dillon Mulroy | follow MIT |
| `eslint-stylistic` (in `install-anti-slop`) | [eslint-stylistic/eslint-stylistic](https://github.com/eslint-stylistic/eslint-stylistic) `435c3ea` (v6.0.0-beta.6) — `vendor/licenses/ESLINT-STYLISTIC-MIT.txt` | MIT © OpenJS Foundation and contributors; © 2023-PRESENT ESLint Stylistic contributors | follow MIT |
| `humanizer` | [blader/humanizer](https://github.com/blader/humanizer) 3.1.0 (`225a6f3`); skill `NOTICE.md` | MIT © 2024-2026 blader contributors | follow MIT |
| `academic` | Original first-party text. Conceptual pipeline (research→write→review→revise) independently implemented. No source copied from Imbad0202/academic-research-skills (CC-BY-NC-4.0). | MIT © 2026 OpenCodeHighEnd contributors | follow MIT |
| `hyperframes` | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes) v0.8.119 (`3a0299e`), refreshed in 0.1.13 to v0.8.122 (`6037d22`); skill `NOTICE.md` | Apache-2.0 | follow Apache-2.0 |
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.16
0.1.17
3 changes: 2 additions & 1 deletion docs/CATALOG-FREEZE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

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

- **Product version**: 0.1.16
- **Product version**: 0.1.17
- **Catalog**: 65 names. 50 model-invoked under `skills/`. 15 manual under `manual-skills/` + `commands/`.
- **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`.
- **Wave 0.1.14 body-only**: catalog strictly frozen at 65 (50 model + 15 manual). Zero catalog growth. No new exceptions. Post-release fixes for 0.1.13: corrected crawl4ai commit pin in `vendor/sources.json` to official `v0.9.4` release (`133e1d92e37885dfccc03ea2e3687d06c98b7ceb`); completed retirement of Design Bank fallback #4 from runtime and tests with fail-closed Drive error propagation; corrected Playwright CLI config path documentation (`.playwright/cli.config.json`) and clarified timezone/locale emulation via `run-code`; aligned reflect invariant enforcement hierarchy wording (5-level OCH adaptation).
Expand Down
2 changes: 1 addition & 1 deletion docs/source-wave.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Recorded per Phase 0 contract.
| Source | Upstream Commit / Ref | Nature / Contents | Disposition | Survivor in OCBF | Notes / Rationale |
|---|---|---|:---:|---|---|
| [miqdadbadjuber/anti-slop](https://github.com/miqdadbadjuber/anti-slop) | `91f12ec67e9de6043cfd93b846404986ba73c3f4` (v3.2.20) | UI/copy filter (38 rules R-01–R-38), 3 tiers (Hard Gate, Purpose-Gate, Quality Locks), Delivery Gate checklist, Liveliness dials, during/after usage modes. MIT. | **MERGE** | `skills/impeccable` (taste-guard + direction), `skills/humanizer`, `rules/03-prose-discipline.md` | Filter, not a style guide. Do not vendor as 65th skill (`antislop` or `antislop-ui`). Distinct from Oxlint. |
| [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) | `e8c4880471b23ab7f216fba7b27d173a6ef07d4c` (v0.1.2) | TypeScript/JavaScript Oxlint static linter ruleset. MIT. | **DONE** | `skills/install-anti-slop` | Vendored and pinned at v0.1.2. 23 assets blob-identical to e8c4880 since 0.1.15 (restored local drift in rules/no-widen-then-assert.ts from 0.1.0 bootstrap; upstream was correct). update mode is first-party OCH. c44ef22 evaluated: 3 generic rules, 4 Effect rules, shared helpers, vendored eslint-stylistic (MIT) DEFERRED (not vendored). |
| [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) | `c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b` (0.1.2+c44ef22) | TypeScript/JavaScript Oxlint static linter ruleset. MIT. | **SYNCED** | `skills/install-anti-slop` | 38 assets blob-identical to c44ef22 (untagged main, post-v0.1.2); includes vendored eslint-stylistic (MIT) adapted upstream; update mode reconciled with upstream references/update.md. |
| [microsoft/markitdown](https://github.com/microsoft/markitdown) | `b8f79c57ebc0044be41323d89b2a45d3fda8460e` (v0.1.8) | File to Markdown converter (Office/PDF/HTML/CSV/XLSX/PPTX/EPUB/ZIP). MIT. | **PIN_ONLY** | `skills/markitdown` | Pinned to v0.1.8 (commit `b8f79c57`). Skill body unchanged. Enable writes `uvx --from markitdown-mcp==0.0.1a7 --with markitdown[all]==0.1.8 markitdown-mcp`. Output remains data-only. SmartDoc keeps contract/QA/render. MCP remains FOREIGN_ON_DEMAND. |
| [affaan-m/ECC](https://github.com/affaan-m/ECC) | `dd6ee538aee0f548d4a6b520118f875431fd749e` | External agent control plane (68 agents, 292 skills, hooks, learning runtime). | **REJECT** | None (`FOREIGN_ON_DEMAND`) | Do not vendor harness control plane or 292 skills. No installer mutator. Doctor does not fail when absent. Individual warehouse ports remain first-party MIT. |
| [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) | `e79ca9ec7e071eb3a3b623c4fb752e853fc3ed58` (`ccbc156` base) | Design taste dials (VARIANCE, MOTION, DENSITY), quality rules, GSAP/Tailwind references. MIT. | **MERGE** | `skills/impeccable/reference/taste/direction.md`, `taste-guard.md` | Dials already integrated into Impeccable surface brief. Fenced after Design Bank or DESIGN.md direction exists. Never a frontend-design twin. |
Expand Down
26 changes: 19 additions & 7 deletions skills/install-anti-slop/NOTICE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,33 @@
This skill vendors and adapts the Anti-Slop Oxlint plugin originally authored by Dillon Mulroy.

- Upstream repository: https://github.com/dmmulroy/anti-slop
- Upstream commit: e8c4880471b23ab7f216fba7b27d173a6ef07d4c
- Upstream version: 0.1.2
- Upstream commit: c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b
- Upstream version: 0.1.2+c44ef22 (untagged main, post-v0.1.2)
- License: MIT License (see vendor/licenses/DMMULROY-ANTI-SLOP-MIT.txt)
- Copyright (c) 2026 Dillon Mulroy

## Bundled Third-Party Code
- **eslint-stylistic**: Vendored under `assets/anti-slop/vendor/eslint-stylistic/`.
- Upstream source: https://github.com/eslint-stylistic/eslint-stylistic
- Commit: `435c3ea0fd26a5fef9042c4b36b6e165fbbf8d08` (tag `v6.0.0-beta.6`)
- License: MIT License (see `vendor/licenses/ESLINT-STYLISTIC-MIT.txt` and `assets/anti-slop/vendor/eslint-stylistic/LICENSE`)
- Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
- Copyright (c) 2023-PRESENT ESLint Stylistic contributors
- Note: Adapted and ported to Oxlint AST types by Dillon Mulroy upstream (see `assets/anti-slop/vendor/eslint-stylistic/UPSTREAM.md`), not by OpenCodeHighEnd.

## Modifications for OpenCodeHighEnd
- Vendored 38 assets under `assets/anti-slop/` are byte-identical to upstream `c44ef22` (zero local modifications to linter rule assets).
- Adapted as an opt-in model-invoked skill for TypeScript/JavaScript projects.
- Added `scripts/manage.mjs` supporting 5 explicit modes:
- `audit`: isolated discovery reporting findings per rule and file category without repo mutations.
- `recommended`: curated high-signal OCBF profile (`no-chained-type-assertions`, `no-widen-then-assert`, audit on `no-known-value-widening`, audit/warn on `require-safety-comment-for-type-assertion`).
- `strict`: full 15-rule generic ruleset from upstream snapshot.
- `recommended`: curated high-signal profile (`no-chained-type-assertions`, `no-widen-then-assert`, audit on `no-known-value-widening`, audit/warn on `require-safety-comment-for-type-assertion`).
- `strict`: full 18-rule generic ruleset from upstream snapshot plus native companion `oxc/no-accumulating-spread`.
- `custom`: project-configured rules.
- `update`: refreshes vendored rules and assets while preserving current profile preferences.
- `effect`: opt-in Effect service layer rules for direct Effect dependencies.
- Added safe removal, update, idempotency checks, and collision detection.
- `update`: non-destructive dry-run comparison (`[ADD]`, `[CHANGE]`, `[SAME]`, `[LOCAL-ONLY]`) following upstream `references/update.md` merge doctrine; mutations applied only with `--force`.
- `effect`: 5 opt-in Effect architectural rules for direct Effect dependencies.
- Added safe removal, non-destructive update, idempotency checks, and collision detection.
- Restored `scripts/install.mjs` to byte-identical upstream snapshot (`db1f155b`).
- Added `references/update.md` byte-identical to upstream snapshot (`b2e7f675`).
- Strictly segregated from core OCBF Python dependencies (no Oxlint forced onto OCBF itself).

## Additional Attribution
Expand Down
25 changes: 15 additions & 10 deletions skills/install-anti-slop/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,28 @@ license: MIT
# install-anti-slop

OpenCodeHighEnd adapter for installing, auditing, configuring, or removing Anti-Slop Oxlint rules.
Vendored from [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) (MIT, Dillon Mulroy, commit `e8c4880471b23ab7f216fba7b27d173a6ef07d4c`, v0.1.2).
Vendored from [dmmulroy/anti-slop](https://github.com/dmmulroy/anti-slop) (MIT, Dillon Mulroy, commit `c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b`, version `0.1.2+c44ef22 (untagged main, post-v0.1.2)`).

## Core Boundaries

1. **Opt-In Only**: Load this skill ONLY when the user explicitly requests Anti-Slop (e.g. "pasang anti-slop", "audit anti-slop", "hapus anti-slop"). Never auto-load during ordinary coding or non-TS/JS tasks.
2. **Distinct from `/unslop` and UI Craft**: `/unslop` and `rules/03-prose-discipline.md` handle prose cleanup. UI template anti-patterns (e.g. default purple gradient mesh, Inter-on-white-card slop, fake testimonials) live in `skills/impeccable/reference/taste-guard.md`. `install-anti-slop` is strictly for static Oxlint linting of TypeScript/JavaScript code.
2. **Distinct from `/unslop` and UI Craft**: `/unslop` and `rules/03-prose-discipline.md` handle prose cleanup. UI template anti-patterns live in `skills/impeccable/reference/taste-guard.md`. `install-anti-slop` is strictly for static Oxlint linting of TypeScript/JavaScript code.
3. **No OCBF Core Coupling**: Never add Oxlint or Anti-Slop to OCBF's core Python codebase or dependencies.
4. **Exact Version Coupling**: Keep `oxlint` and `@oxlint/plugins` on the exact same version.
4. **Exact Version Coupling**: Keep `oxlint` and `@oxlint/plugins` on the exact same version (1.78.0).
5. **No Blind Global Rewrites**: Linter findings identify patterns; resolve root causes with inference, `satisfies`, and boundary validation rather than casts or fake comments.

## The 5 Modes

| Mode | Behavior |
|---|---|
| `audit` | Evaluates rules against source/test/tooling; reports findings without modifying files or dependencies. |
| `recommended` | Installs curated OCBF profile (high-signal type safety assertions) after baseline review. |
| `strict` | Enables all 15 generic upstream rules (requires explicit user confirmation). |
| `recommended` | Installs curated OCBF profile (4 high-signal assertions) after baseline review. |
| `strict` | Enables all 18 generic upstream rules + native companion `oxc/no-accumulating-spread` (requires explicit user confirmation). |
| `custom` | Enables user-selected rule set. |
| `update` | Refreshes vendored rules and assets while preserving current profile preferences. |
| `update` | Non-destructive dry-run comparison (ADD/CHANGE/SAME/LOCAL-ONLY); applies overwrite and reconciliation only with `--force` (see [references/update.md](references/update.md)). |

*Effect Rule Group*: Opt-in separately (`--with-effect`) only if `effect` is a direct project dependency.
*Effect Rule Group*: Opt-in separately (`--with-effect`) only if `effect` is a direct project dependency (5 rules).
*Vendored Dependencies*: Includes upstream-adapted `eslint-stylistic` (MIT) under `assets/anti-slop/vendor/eslint-stylistic/`; retain its `LICENSE` and `UPSTREAM.md`.

## Usage

Expand All @@ -47,14 +48,18 @@ node <skill-base-dir>/scripts/manage.mjs install --profile strict
# 4. Install with Effect rules (when project uses Effect)
node <skill-base-dir>/scripts/manage.mjs install --profile recommended --with-effect

# 5. Update existing installation
node <skill-base-dir>/scripts/manage.mjs update --profile recommended
# 5. Non-destructive update review (dry run)
node <skill-base-dir>/scripts/manage.mjs update

# 6. Safe removal
# 6. Apply update with force
node <skill-base-dir>/scripts/manage.mjs update --force --profile recommended

# 7. Safe removal
node <skill-base-dir>/scripts/manage.mjs remove
```

## References

- Detailed profile definitions: [references/profiles.md](references/profiles.md)
- Complete rule documentation & fixes: [references/rules.md](references/rules.md)
- Update workflow & merge doctrine: [references/update.md](references/update.md)
8 changes: 8 additions & 0 deletions skills/install-anti-slop/assets/anti-slop/effect/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import { eslintCompatPlugin } from "@oxlint/plugins";

import { noManualEffectErrorTagRule } from "./rules/no-manual-effect-error-tag.ts";
import { noManualTagComparisonRule } from "./rules/no-manual-tag-comparison.ts";
import { noManualTaggedConstructionRule } from "./rules/no-manual-tagged-construction.ts";
import { noServiceConstructorImportsRule } from "./rules/no-service-constructor-imports.ts";
import { preferEffectMatchRule } from "./rules/prefer-effect-match.ts";

/** Opt-in Oxlint rules for Effect service and Layer architecture. */
const antiSlopEffectPlugin = eslintCompatPlugin({
meta: { name: "anti-slop-effect" },
rules: {
"no-manual-effect-error-tag": noManualEffectErrorTagRule,
"no-manual-tag-comparison": noManualTagComparisonRule,
"no-manual-tagged-construction": noManualTaggedConstructionRule,
"no-service-constructor-imports": noServiceConstructorImportsRule,
"prefer-effect-match": preferEffectMatchRule,
},
});

Expand Down
Loading
Loading