mirror of
https://github.com/actualbudget/actual.git
synced 2026-10-11 22:49:59 +00:00
* [AI] Replace mechanical agent rules with shared agent hooks + nano-staged Move the mechanical "remember to run X" rules out of AGENTS.md and the agent guidance docs into deterministic, cross-agent hooks, and migrate the pre-commit runner from lint-staged to nano-staged. - Add shared hook scripts in scripts/agent-hooks/ (git-guard, format-edited-file, no-strict-ignore-new-file, prefer-one-component, check-on-stop, common helpers) wired for Claude (.claude/settings.json), Codex (.codex/config.toml), and Cursor (.cursor/hooks.json + adapters). - Enforce "avoid enum" via a new actual/no-enum lint rule, grandfathering the two existing declarations in .oxlintrc.json overrides. - Migrate lint-staged -> nano-staged (.nano-staged.json, .husky/pre-commit, package.json). - Trim AGENTS.md, .github/agents/pr-and-commit-rules.md, the Cursor rule, and the committing skill down to the rules that aren't auto-enforced. - Add release note 8089.md. * [AI] Align PR-title wording in AGENTS.md with canonical rules * [AI] Fix check-on-stop hook on bash 3.2 and TSV column collapse The Stop hook silently no-op'd in two ways: - `declare -A` isn't supported on stock macOS bash 3.2, and the slash/hyphen path subscript aborted under `set -u`. Dedupe via a space-padded string match instead. - jq emitted an empty middle TSV field for a package with test but no typecheck; tab is IFS-whitespace so `read` collapsed it and shifted the columns (eslint-plugin-actual then ran neither). Emit non-empty sentinels (-, yes/no) so no field can collapse. Co-Authored-By: Claude Opus 4.8 <[email protected]> --------- Co-authored-by: Claude <[email protected]>
23 lines
1.0 KiB
JavaScript
23 lines
1.0 KiB
JavaScript
const { eslintCompatPlugin } = require('@oxlint/plugins');
|
|
|
|
module.exports = eslintCompatPlugin({
|
|
meta: {
|
|
name: 'eslint-plugin-actual',
|
|
},
|
|
rules: {
|
|
'no-untranslated-strings': require('./rules/no-untranslated-strings'),
|
|
'prefer-trans-over-t': require('./rules/prefer-trans-over-t'),
|
|
typography: require('./rules/typography'),
|
|
'prefer-if-statement': require('./rules/prefer-if-statement'),
|
|
'prefer-logger-over-console': require('./rules/prefer-logger-over-console'),
|
|
'object-shorthand-properties': require('./rules/object-shorthand-properties'),
|
|
'prefer-const': require('./rules/prefer-const'),
|
|
'no-anchor-tag': require('./rules/no-anchor-tag'),
|
|
'no-enum': require('./rules/no-enum'),
|
|
'no-react-default-import': require('./rules/no-react-default-import'),
|
|
'prefer-subpath-imports': require('./rules/prefer-subpath-imports'),
|
|
'enforce-boundaries': require('./rules/enforce-boundaries'),
|
|
'no-extraneous-dependencies': require('./rules/no-extraneous-dependencies'),
|
|
},
|
|
});
|