@draig/lexis-two 1.0.2 → 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.
Files changed (89) hide show
  1. package/package.json +1 -1
  2. package/.claude-plugin/marketplace.json +0 -29
  3. package/.claude-plugin/plugin.json +0 -9
  4. package/.codex-plugin/plugin.json +0 -31
  5. package/.env.example +0 -8
  6. package/.github/FUNDING.yml +0 -1
  7. package/.github/copilot-instructions.md +0 -47
  8. package/.github/plugin/marketplace.json +0 -20
  9. package/.github/plugin/plugin.json +0 -16
  10. package/.github/workflows/deploy-site.yml +0 -53
  11. package/.github/workflows/test.yml +0 -29
  12. package/AUDIT.md +0 -74
  13. package/SPECXIS.md +0 -576
  14. package/benchmarks/README.md +0 -114
  15. package/benchmarks/arms/baseline.js +0 -2
  16. package/benchmarks/arms/caveman-SKILL.md +0 -67
  17. package/benchmarks/arms/caveman.js +0 -8
  18. package/benchmarks/arms/lexis-two.js +0 -10
  19. package/benchmarks/arms/ponytail.js +0 -6
  20. package/benchmarks/behavior.js +0 -58
  21. package/benchmarks/behavior.yaml +0 -40
  22. package/benchmarks/benchmark-local.py +0 -156
  23. package/benchmarks/benchmark-opencode-go.js +0 -294
  24. package/benchmarks/correctness.js +0 -294
  25. package/benchmarks/lib/aggregate-opencode-go.js +0 -103
  26. package/benchmarks/lib/load-env.js +0 -31
  27. package/benchmarks/lib/opencode-go-client.js +0 -151
  28. package/benchmarks/loc.js +0 -13
  29. package/benchmarks/opencode-go-models.json +0 -31
  30. package/benchmarks/promptfooconfig.yaml +0 -41
  31. package/benchmarks/prompts.json +0 -15
  32. package/benchmarks/render-opencode-go-report.js +0 -28
  33. package/benchmarks/results/2026-06-15-llama3.2-local.md +0 -76
  34. package/benchmarks/results/2026-06-16-opencode-go.md +0 -56
  35. package/benchmarks/results/opencode-go-2026-06-16-report.html +0 -226
  36. package/benchmarks/results/opencode-go-2026-06-16.json +0 -1339
  37. package/docs/assets/lexis-two-nobg.png +0 -0
  38. package/docs/assets/logo.png +0 -0
  39. package/docs/assets/logo.svg +0 -4
  40. package/docs/portability.md +0 -147
  41. package/docs/site.md +0 -52
  42. package/gemini-extension.json +0 -7
  43. package/pi-extension/index.js +0 -161
  44. package/pi-extension/package.json +0 -8
  45. package/pi-extension/test/extension.test.js +0 -89
  46. package/pi-extension/test/helpers.test.js +0 -35
  47. package/scripts/check-rule-copies.js +0 -82
  48. package/site/astro.config.mjs +0 -18
  49. package/site/package-lock.json +0 -4913
  50. package/site/package.json +0 -14
  51. package/site/public/CNAME +0 -1
  52. package/site/public/assets/lexis-two-nobg.png +0 -0
  53. package/site/public/assets/logo.png +0 -0
  54. package/site/public/assets/logo.svg +0 -4
  55. package/site/public/robots.txt +0 -4
  56. package/site/src/components/Adapt.astro +0 -33
  57. package/site/src/components/Benchmarks.astro +0 -232
  58. package/site/src/components/Commands.astro +0 -33
  59. package/site/src/components/Ecosystem.astro +0 -30
  60. package/site/src/components/Example.astro +0 -77
  61. package/site/src/components/Footer.astro +0 -28
  62. package/site/src/components/Header.astro +0 -87
  63. package/site/src/components/Hero.astro +0 -58
  64. package/site/src/components/Home.astro +0 -46
  65. package/site/src/components/Hosts.astro +0 -62
  66. package/site/src/components/Install.astro +0 -139
  67. package/site/src/components/LanguageSwitcher.astro +0 -82
  68. package/site/src/components/Philosophy.astro +0 -23
  69. package/site/src/components/Stacks.astro +0 -33
  70. package/site/src/components/Suggested.astro +0 -39
  71. package/site/src/data/opencode-go-benchmark.json +0 -230
  72. package/site/src/i18n/en.ts +0 -155
  73. package/site/src/i18n/es.ts +0 -158
  74. package/site/src/i18n/index.ts +0 -14
  75. package/site/src/layouts/Layout.astro +0 -114
  76. package/site/src/pages/benchmarks.astro +0 -4
  77. package/site/src/pages/es/benchmarks.astro +0 -4
  78. package/site/src/pages/es/index.astro +0 -10
  79. package/site/src/pages/index.astro +0 -10
  80. package/site/src/styles/global.css +0 -780
  81. package/site/tsconfig.json +0 -3
  82. package/tests/behavior.test.js +0 -80
  83. package/tests/commands.test.js +0 -40
  84. package/tests/copilot-plugin.test.js +0 -33
  85. package/tests/correctness.test.js +0 -191
  86. package/tests/gemini-extension.test.js +0 -78
  87. package/tests/hooks-windows.test.js +0 -48
  88. package/tests/hooks.test.js +0 -177
  89. package/tests/opencode-plugin.test.js +0 -64
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draig/lexis-two",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
5
5
  "main": "./.opencode/plugins/lexis-two.mjs",
6
6
  "exports": {
@@ -1,29 +0,0 @@
1
- {
2
- "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
- "name": "lexis-two",
4
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
5
- "owner": {
6
- "name": "Agustin Avellaneda",
7
- "url": "https://github.com/nitdraig"
8
- },
9
- "plugins": [
10
- {
11
- "name": "lexis-two",
12
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
13
- "source": "./",
14
- "category": "productivity"
15
- }
16
- ],
17
- "suggestions": [
18
- {
19
- "name": "my-cursor-skills",
20
- "url": "https://github.com/nitdraig/my-cursor-skills",
21
- "description": "Cursor skills collection to review for complementary features"
22
- },
23
- {
24
- "name": "ponytail",
25
- "url": "https://github.com/DietrichGebert/ponytail",
26
- "description": "Base project from which lexis-two was forked and extended"
27
- }
28
- ]
29
- }
@@ -1,9 +0,0 @@
1
- {
2
- "name": "lexis-two",
3
- "version": "1.0.0",
4
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
5
- "author": {
6
- "name": "Agustin Avellaneda",
7
- "url": "https://github.com/nitdraig"
8
- }
9
- }
@@ -1,31 +0,0 @@
1
- {
2
- "name": "lexis-two",
3
- "version": "1.0.0",
4
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
5
- "author": {
6
- "name": "Agustin Avellaneda",
7
- "url": "https://github.com/nitdraig"
8
- },
9
- "homepage": "https://github.com/nitdraig/lexis-two",
10
- "repository": "https://github.com/nitdraig/lexis-two",
11
- "license": "MIT",
12
- "keywords": ["yagni", "minimalism", "code-review", "productivity"],
13
- "skills": "../skills/",
14
- "interface": {
15
- "displayName": "Lexis-Two",
16
- "shortDescription": "The simple way to obtain the best code",
17
- "longDescription": "Prefer YAGNI, the standard library, native platform features, and the smallest correct implementation.",
18
- "developerName": "Agustin Avellaneda",
19
- "category": "Productivity",
20
- "capabilities": ["Instructions", "Lifecycle hooks"],
21
- "websiteURL": "https://github.com/nitdraig/lexis-two",
22
- "defaultPrompt": [
23
- "Use Lexis-Two mode for this task.",
24
- "Review this diff for over-engineering.",
25
- "Find the smallest correct implementation."
26
- ],
27
- "brandColor": "#111111",
28
- "composerIcon": "../assets/logo.png",
29
- "logo": "../assets/logo.png"
30
- }
31
- }
package/.env.example DELETED
@@ -1,8 +0,0 @@
1
- # Copy to .env (gitignored) and fill in.
2
-
3
- # Anthropic — for promptfoo benchmark (benchmarks/promptfooconfig.yaml)
4
- ANTHROPIC_API_KEY=sk-ant-...
5
-
6
- # OpenCode Go — for benchmarks/benchmark-opencode-go.js
7
- # Get key: https://opencode.ai/docs/go/ → subscribe → /connect in OpenCode TUI
8
- OPENCODE_API_KEY=
@@ -1 +0,0 @@
1
- github: [nitdraig]
@@ -1,47 +0,0 @@
1
- # Lexis — Lazy Senior Dev Mode
2
-
3
- > Part of the [Lexis ecosystem](https://github.com/nitdraig/lexis-two) by @nitdraig.
4
- > Forked from [ponytail](https://github.com/DietrichGebert/ponytail) (MIT).
5
-
6
- You are a lazy senior developer. Lazy means efficient, not careless.
7
- The best code is the code never written.
8
-
9
- Before writing any code, stop at the first rung that holds:
10
- 1. Does this need to exist at all? (YAGNI)
11
- 2. Does the standard library already do this? Use it.
12
- 3. Does a native platform feature cover it? Use it.
13
- 4. Does an already-installed dependency solve it? Use it.
14
- 5. Can this be one line? Make it one line.
15
- 6. Only then: write the minimum code that works.
16
-
17
- ## Stack Shortcuts
18
-
19
- - Modal → `<dialog>`, not a library
20
- - Date input → `<input type="date">`, not a datepicker
21
- - Animation → CSS transition, not framer-motion unless installed
22
- - State → `useState` before zustand; zustand before redux
23
- - Validation → HTML5 first, then zod if installed
24
- - Server Components by default; `use client` only for interactivity
25
- - Caching → in-memory Map before Redis unless Redis is configured
26
- - MongoDB: single aggregation pipeline, not multiple queries
27
- - PostgreSQL: Prisma ORM first, raw SQL only when ORM cannot express it
28
- - SQLite: only for local/prototype/single-user — not production SaaS
29
- - Redis: always set TTL; never use as primary DB
30
- - Check which DB the project uses before writing any query
31
-
32
- ## Rules
33
-
34
- - No abstractions that were not explicitly requested
35
- - No new dependency if it can be avoided
36
- - No boilerplate nobody asked for
37
- - Deletion over addition. Boring over clever. Fewest files possible
38
- - Question complex requests: "Do you actually need X, or does Y cover it?"
39
- - Mark intentional simplifications: // lexis: reason
40
- - All user-facing responses in Spanish. All code, comments, JSDoc in English
41
- - Never rewrite entire files when a targeted edit is sufficient
42
- - strict: true always. Never any, as, or ! without a // lexis: explanation
43
-
44
- ## Never Lazy About
45
-
46
- Input validation, error handling that prevents data loss, security,
47
- accessibility, TypeScript types, tests for new behavior.
@@ -1,20 +0,0 @@
1
- {
2
- "name": "lexis-two",
3
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
4
- "owner": {
5
- "name": "Agustin Avellaneda",
6
- "url": "https://github.com/nitdraig"
7
- },
8
- "plugins": [
9
- {
10
- "name": "lexis-two",
11
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
12
- "source": "./",
13
- "category": "productivity",
14
- "tags": ["yagni", "minimalism", "code-review", "productivity"],
15
- "commands": "commands/",
16
- "skills": "skills/",
17
- "hooks": "hooks/copilot-hooks.json"
18
- }
19
- ]
20
- }
@@ -1,16 +0,0 @@
1
- {
2
- "name": "lexis-two",
3
- "description": "The simple way to obtain the best code. Portable rules, skills, and slash commands for AI agents with lowest tokens usage.",
4
- "version": "1.0.0",
5
- "author": {
6
- "name": "Agustin Avellaneda",
7
- "url": "https://github.com/nitdraig"
8
- },
9
- "homepage": "https://github.com/nitdraig/lexis-two",
10
- "repository": "https://github.com/nitdraig/lexis-two",
11
- "license": "MIT",
12
- "keywords": ["yagni", "minimalism", "code-review", "productivity"],
13
- "commands": "commands/",
14
- "skills": "skills/",
15
- "hooks": "hooks/copilot-hooks.json"
16
- }
@@ -1,53 +0,0 @@
1
- name: Deploy to GitHub Pages
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- paths:
7
- - "site/**"
8
- workflow_dispatch:
9
-
10
- permissions:
11
- contents: read
12
- pages: write
13
- id-token: write
14
-
15
- concurrency:
16
- group: "pages"
17
- cancel-in-progress: true
18
-
19
- jobs:
20
- build:
21
- runs-on: ubuntu-latest
22
- steps:
23
- - uses: actions/checkout@v4
24
-
25
- - uses: actions/setup-node@v4
26
- with:
27
- node-version: '22'
28
- cache: npm
29
- cache-dependency-path: site/package-lock.json
30
-
31
- - name: Install dependencies
32
- working-directory: site
33
- run: npm ci
34
-
35
- - name: Build Astro site
36
- working-directory: site
37
- run: npm run build
38
-
39
- - name: Upload Pages Artifact
40
- uses: actions/upload-pages-artifact@v3
41
- with:
42
- path: ./site/dist
43
-
44
- deploy:
45
- needs: build
46
- runs-on: ubuntu-latest
47
- environment:
48
- name: github-pages
49
- url: ${{ steps.deployment.outputs.page_url }}
50
- steps:
51
- - name: Deploy to GitHub Pages
52
- id: deployment
53
- uses: actions/deploy-pages@v4
@@ -1,29 +0,0 @@
1
- name: test
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
-
8
- jobs:
9
- test:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - uses: actions/checkout@v4
13
-
14
- - uses: actions/setup-node@v4
15
- with:
16
- node-version: '22'
17
-
18
- - uses: actions/setup-python@v5
19
- with:
20
- python-version: '3.12'
21
-
22
- - name: Install Python deps for correctness checks
23
- run: pip install pandas==2.2.2
24
-
25
- - name: Check rule copies
26
- run: node scripts/check-rule-copies.js
27
-
28
- - name: Run tests
29
- run: npm test
package/AUDIT.md DELETED
@@ -1,74 +0,0 @@
1
- # Audit Report — lexis-two v1.0.0
2
-
3
- **Date:** 2026-06-16
4
- **Scope:** Full project (repo root, hooks, commands, skills, plugins, site, tests, docs)
5
- **Method:** Parallel audit across 3 agents (root+tests, hooks+commands+skills+plugins, docs+examples+assets)
6
-
7
- ---
8
-
9
- ## HIGH
10
-
11
- | # | File | Issue |
12
- |---|------|-------|
13
- | 1 | `package.json` | **Version mismatch.** Root said `0.1.0`, plugin manifests said `4.6.0` (Ponytail legacy). Unified to `1.0.0` across all manifests. |
14
- | 2 | `README.md:188-219` | **Roadmap desync.** v0.3 items unchecked but files exist: `pi-extension/`, `examples/`, `.claude-plugin/`, `.codex-plugin/`, `.github/plugin/`. Checkboxes should reflect reality. |
15
- | 3 | `hooks/copilot-hooks.json` | **Missing node availability check.** Unlike `hooks.json` (Claude Code) which wraps node calls in `command -v node ... || exit 0`, Copilot hooks run `node` directly. Crashes if node is absent instead of degrading. |
16
- | 4 | `.codex-plugin/plugin.json:13,28-29` | **Broken relative paths.** `"skills": "./skills/"` and `"logo": "./assets/logo.png"` resolve inside `.codex-plugin/` (nonexistent). Should be `../skills/` and `../assets/logo.png`. |
17
-
18
- ## MEDIUM
19
-
20
- | # | File | Issue |
21
- |---|------|-------|
22
- | 5 | `tests/hooks.test.js` | **No `node:test` blocks.** Runs assertions as top-level code. First failure stops the rest. Inconsistent with all other test files. |
23
- | 6 | `tests/hooks.test.js:3` | **`require('assert')` instead of `require('node:assert/strict')`.** Loose comparison could mask type coercion bugs. |
24
- | 7 | `tests/hooks.test.js:21` | **Mutates `process.env` globally** without restore. Fragile if Node parallelizes test files. |
25
- | 8 | `commands/lexis-two.toml` | **Missing `name` field.** All other 6 TOML commands have `name`. This one only has `description` + `prompt`. |
26
- | 9 | `hooks/lexis-two-instructions.js:75` + `lexis-two-config.js:32` | **`normalizePersistedMode` duplicated.** Same function name, different implementations. Risk of silent divergence. |
27
- | 10 | `docs/portability.md:6` | **Stale reference.** Says "static landing in `docs/`" but site source is in `site/`. |
28
- | 11 | `examples/` | **Stack mismatch with roadmap.** README promises Next.js, Express, MongoDB, PostgreSQL examples. Actual: Python/FastAPI + JS vanilla. |
29
- | 12 | `tests/gemini-extension.test.js:26` | **Hardcoded command subset.** Only validates 2 of 7 command files. Other tests cover more. |
30
-
31
- ## LOW
32
-
33
- | # | File | Issue |
34
- |---|------|-------|
35
- | 13 | `.github/workflows/test.yml` | No npm dependency caching (deploy.yml has it). |
36
- | 14 | `.github/workflows/test.yml:23` | `pip install pandas` without version pin. |
37
- | 15 | `.github/workflows/test.yml` vs `deploy-site.yml` | `node-version` quoting inconsistent (string vs integer). |
38
- | 16 | `hooks/lexis-two-config.js:1` | Shebang on module that is only `require()`'d, never run directly. |
39
- | 17 | `plugins/` and `modes/` | Empty directories, unreferenced anywhere. |
40
- | 18 | `assets/lexis-two-complete.webp` + `social-preview.png` | Unreferenced files. |
41
- | 19 | `README.md:22` | Subtitle says "Lexis-Two-specific runs pending" but benchmarks exist. |
42
- | 20 | `README.md:160` | `my-skills` in README vs `my-cursor-skills` in marketplace.json. |
43
- | 21 | `scripts/check-rule-copies.js` | No unit test for the script itself. |
44
-
45
- ---
46
-
47
- ## Verified OK
48
-
49
- - 36 root tests + 2 pi-extension tests pass
50
- - Site build: 4 pages, sitemap + robots.txt generated
51
- - Chart.js lazy-loaded via IntersectionObserver
52
- - Structured data (JSON-LD) in Layout
53
- - Skip link i18n working
54
- - License MIT correct (includes Ponytail attribution)
55
- - `.env` not tracked in git
56
- - No hardcoded secrets
57
- - Hooks degrade gracefully (except copilot-hooks.json — HIGH #3)
58
- - `check-rule-copies.js` validates 5 rule copies match AGENTS.md
59
- - `focus-visible` styles present
60
- - `--text-muted` contrast passes WCAG AA (5.2:1)
61
-
62
- ---
63
-
64
- ## Actions Taken in This Session
65
-
66
- 1. **Version unified to `1.0.0`** across `package.json`, `gemini-extension.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `.github/plugin/plugin.json`, `site/package.json`.
67
- 2. **`.codex-plugin` paths fixed** — `skills` and asset references point to `../`.
68
- 3. **Test updated** — `gemini-extension.test.js` now also validates `package.json` version consistency.
69
- 4. **Spanish translation fixed** — tildes, interrogaciones de apertura, skip link i18n, "Copied" feedback.
70
- 5. **Accessibility** — `focus-visible` global, `--text-muted` contrast, heading hierarchy.
71
- 6. **Dead code removed** — `BenchmarkPage.astro` deleted (253 lines).
72
- 7. **Chart.js lazy-loaded** — IntersectionObserver on `#benchmarks`, 200KB off main thread.
73
- 8. **SEO** — `@astrojs/sitemap`, `robots.txt`, JSON-LD `SoftwareApplication`, `meta robots` + `author`.
74
- 9. **Language switcher** — Pill button with globe SVG icon, aria-labels, scoped CSS.