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
5 changes: 5 additions & 0 deletions .claude/commands/openspec/apply.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,25 @@ description: Implement an approved OpenSpec change and keep tasks in sync.
category: OpenSpec
tags: [openspec, apply]
---

<!-- OPENSPEC:START -->

**Guardrails**

- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
- Keep changes tightly scoped to the requested outcome.
- Refer to `openspec/AGENTS.md` (located inside the `openspec/` directory—run `ls openspec` or `openspec update` if you don't see it) if you need additional OpenSpec conventions or clarifications.

**Steps**
Track these steps as TODOs and complete them one by one.

1. Read `changes/<id>/proposal.md`, `design.md` (if present), and `tasks.md` to confirm scope and acceptance criteria.
2. Work through tasks sequentially, keeping edits minimal and focused on the requested change.
3. Confirm completion before updating statuses—make sure every item in `tasks.md` is finished.
4. Update the checklist after all work is done so each task is marked `- [x]` and reflects reality.
5. Reference `openspec list` or `openspec show <item>` when additional context is required.

**Reference**

- Use `openspec show <id> --json --deltas-only` if you need additional context from the proposal while implementing.
<!-- OPENSPEC:END -->
5 changes: 5 additions & 0 deletions .claude/commands/openspec/archive.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,23 @@ description: Archive a deployed OpenSpec change and update specs.
category: OpenSpec
tags: [openspec, archive]
---

<!-- OPENSPEC:START -->

**Guardrails**

- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
- Keep changes tightly scoped to the requested outcome.
- Refer to `openspec/AGENTS.md` (located inside the `openspec/` directory—run `ls openspec` or `openspec update` if you don't see it) if you need additional OpenSpec conventions or clarifications.

**Steps**

1. Identify the requested change ID (via the prompt or `openspec list`).
2. Run `openspec archive <id> --yes` to let the CLI move the change and apply spec updates without prompts (use `--skip-specs` only for tooling-only work).
3. Review the command output to confirm the target specs were updated and the change landed in `changes/archive/`.
4. Validate with `openspec validate --strict` and inspect with `openspec show <id>` if anything looks off.

**Reference**

- Inspect refreshed specs with `openspec list --specs` and address any validation issues before handing off.
<!-- OPENSPEC:END -->
5 changes: 5 additions & 0 deletions .claude/commands/openspec/proposal.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ description: Scaffold a new OpenSpec change and validate strictly.
category: OpenSpec
tags: [openspec, change]
---

<!-- OPENSPEC:START -->

**Guardrails**

- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
- Keep changes tightly scoped to the requested outcome.
- Refer to `openspec/AGENTS.md` (located inside the `openspec/` directory—run `ls openspec` or `openspec update` if you don't see it) if you need additional OpenSpec conventions or clarifications.
- Identify any vague or ambiguous details and ask the necessary follow-up questions before editing files.

**Steps**

1. Review `openspec/project.md`, run `openspec list` and `openspec list --specs`, and inspect related code or docs (e.g., via `rg`/`ls`) to ground the proposal in current behaviour; note any gaps that require clarification.
2. Choose a unique verb-led `change-id` and scaffold `proposal.md`, `tasks.md`, and `design.md` (when needed) under `openspec/changes/<id>/`.
3. Map the change into concrete capabilities or requirements, breaking multi-scope efforts into distinct spec deltas with clear relationships and sequencing.
Expand All @@ -21,6 +25,7 @@ tags: [openspec, change]
7. Validate with `openspec validate <id> --strict` and resolve every issue before sharing the proposal.

**Reference**

- Use `openspec show <id> --json --deltas-only` or `openspec show <spec> --type spec` to inspect details when validation fails.
- Search existing requirements with `rg -n "Requirement:|Scenario:" openspec/specs` before writing new ones.
- Explore the codebase with `rg <keyword>`, `ls`, or direct file reads so proposals align with current implementation realities.
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ runs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: ".nvmrc"
cache: "pnpm"
node-version-file: '.nvmrc'
cache: 'pnpm'

- name: Install
run: pnpm install
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ jobs:
- name: Ouptut version
run: echo "The version is ${{ steps.release_version.outputs.VERSION }}"



- name: Building packages
run: pnpm build

Expand Down
14 changes: 14 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 80,
"singleQuote": true,
"trailingComma": "all",
"experimentalSortImports": {},
"ignorePatterns": [
"**/dist/**",
"**/.changeset",
"**/CHANGELOG.md",
"**/pnpm-lock.yaml",
"**/pnpm-workspace.yaml"
]
}
68 changes: 68 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": [
"eslint",
"typescript",
"unicorn",
"react",
"jest",
"import",
"oxc"
],
"env": {
"node": true,
"browser": true,
"es2024": true
},
"globals": {
"cy": "readonly",
"Cypress": "readonly",
"VERSION": "readonly",
"SplitIO": "readonly"
},
"categories": {
"correctness": "error",
"suspicious": "warn"
},
"ignorePatterns": ["**/node_modules/", "**/coverage/", "**/dist/"],
"rules": {
"eqeqeq": ["error", "smart"],
"no-console": "warn",
"no-unused-vars": [
"error",
{ "argsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" }
],
"no-undef": "error",
"no-void": "error",
"no-negated-condition": "error",
"no-restricted-globals": ["error", "event", "atob", "btoa"],
"curly": "error",
"no-lonely-if": "error",
"no-param-reassign": "error",
"default-param-last": "error",
"no-empty": "error",
"no-empty-function": "error",
"no-array-constructor": "error",
"typescript/no-explicit-any": "off",
"typescript/no-inferrable-types": "error",
"typescript/array-type": ["error", { "default": "array" }],
"typescript/prefer-for-of": "error",
"typescript/prefer-enum-initializers": "error",
"typescript/no-unnecessary-template-expression": "off",
"unicorn/prefer-number-properties": "error",
"react/self-closing-comp": "error",
"react/react-in-jsx-scope": "off",
"react/jsx-no-useless-fragment": "off",
"react-hooks/exhaustive-deps": "warn",
"import/no-duplicates": "error",
"jest/no-disabled-tests": "warn"
},
"overrides": [
{
"files": ["demo/**", "scripts/**"],
"rules": {
"no-console": "off"
}
}
]
}
15 changes: 15 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"workbench.colorCustomizations": {
"tab.unfocusedActiveBorder": "#fff0"
},
"editor.defaultFormatter": "oxc.oxc-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.oxc": "explicit"
},
"[javascript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
}
}
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
<!-- OPENSPEC:START -->

# OpenSpec Instructions

These instructions are for AI assistants working in this project.

Always open `@/openspec/AGENTS.md` when the request:

- Mentions planning or proposals (words like proposal, spec, change, plan)
- Introduces new capabilities, breaking changes, architecture shifts, or big performance/security work
- Sounds ambiguous and you need the authoritative spec before coding

Use `@/openspec/AGENTS.md` to learn:

- How to create and apply change proposals
- Spec format and conventions
- Project structure and guidelines

Keep this managed block so 'openspec update' can refresh the instructions.

<!-- OPENSPEC:END -->
<!-- OPENSPEC:END -->
5 changes: 4 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
<!-- OPENSPEC:START -->

# OpenSpec Instructions

These instructions are for AI assistants working in this project.

Always open `@/openspec/AGENTS.md` when the request:

- Mentions planning or proposals (words like proposal, spec, change, plan)
- Introduces new capabilities, breaking changes, architecture shifts, or big performance/security work
- Sounds ambiguous and you need the authoritative spec before coding

Use `@/openspec/AGENTS.md` to learn:

- How to create and apply change proposals
- Spec format and conventions
- Project structure and guidelines

Keep this managed block so 'openspec update' can refresh the instructions.

<!-- OPENSPEC:END -->
<!-- OPENSPEC:END -->
100 changes: 0 additions & 100 deletions biome.json

This file was deleted.

4 changes: 2 additions & 2 deletions lint-staged.config.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default {
'*': [
'biome check --write --no-errors-on-unmatched', // Format, sort imports, lint, and apply safe fixes
'git add -u',
'oxlint --fix', // Lint and apply safe fixes
'oxfmt --write', // Format and sort imports
],
};
Loading
Loading