diff --git a/.agents/skills/local-qa/SKILL.md b/.agents/skills/local-qa/SKILL.md index 7c0dd86..0b2d23d 100644 --- a/.agents/skills/local-qa/SKILL.md +++ b/.agents/skills/local-qa/SKILL.md @@ -1,25 +1,22 @@ -# local-qa +--- +name: local-qa +description: Run local QA including formatting, linting, and testing for the repository. Use whenever any file has been updated. +disable-model-invocation: false +--- -Run local QA checks (format, lint, test) on the repository. +# Local QA (format, lint, and test) -## When to use +Run the local QA script `scripts/qa.sh` in this skill. -After making changes to repository files, run `scripts/qa.sh` to validate formatting, linting, and tests. +## Procedure -## Steps - -1. Execute `scripts/qa.sh` and capture the results. -2. Report successes, failures, warnings, and any modified files. - -## If tools are missing - -Install them following this priority order: - -1. Project package managers (`uv`, `poetry`, npm scripts) -2. System package managers (`brew`, `apt`) -3. Language-specific installers (`pipx`, `pip`, `npm`, `go install`) - -## Constraints - -- Only execute QA and tool-installation commands. -- If installation fails or requires unavailable privileges, report the attempt and exact failure, then stop. +- Execute the script exactly as shown above when this skill is triggered. +- Capture and summarize key output (success/failure, major warnings, and any files modified). +- If the script fails due to missing tooling (`command not found`, missing executable, or equivalent), install the missing tool(s) and rerun `./scripts/qa.sh`. +- Install tools using this order of preference: + 1. Use the project's package manager when applicable (`uv`/`poetry` for Python, package manager scripts/dependencies for Node.js). + 2. Use a system package manager (`brew` on macOS, `apt` on Debian/Ubuntu) when project-local install is not applicable. + 3. Use language-specific installers as fallback (`pipx`/`pip`, `npm`, `go install`, etc.). +- If multiple tools are missing, repeat install -> rerun until QA completes or you hit a blocker. +- If installation fails or requires unavailable privileges, report what was attempted, the exact failure, and stop. +- Do not run unrelated commands; only run commands needed for QA and missing-tool installation. diff --git a/.agents/skills/local-qa/scripts/qa.sh b/.agents/skills/local-qa/scripts/qa.sh index 585728e..de65cff 100755 --- a/.agents/skills/local-qa/scripts/qa.sh +++ b/.agents/skills/local-qa/scripts/qa.sh @@ -13,7 +13,14 @@ uv run pytest npx -y prettier --write './**/*.md' # GitHub Actions -zizmor --fix=safe .github/workflows -git ls-files -z -- '.github/workflows/*.yml' | xargs -0 -t actionlint -git ls-files -z -- '.github/workflows/*.yml' | xargs -0 -t yamllint -d '{"extends": "relaxed", "rules": {"line-length": "disable"}}' -checkov --framework=all --output=github_failed_only --directory=. +case "${OSTYPE}" in + darwin* | linux* ) + zizmor --fix=safe .github/workflows + git ls-files -z -- '.github/workflows/*.yml' | xargs -0 -t actionlint + git ls-files -z -- '.github/workflows/*.yml' | xargs -0 -t yamllint -d '{"extends": "relaxed", "rules": {"line-length": "disable"}}' + checkov --framework=all --output=github_failed_only --directory=. + ;; + * ) + echo "GitHub Actions linting is only supported on Linux and macOS." + ;; +esac diff --git a/README.md b/README.md index eb480d8..4569720 100644 --- a/README.md +++ b/README.md @@ -50,26 +50,26 @@ python -m mt5cli -o account.csv account-info ## Commands -| Command | Description | -| ------------------ | ------------------------------------------- | -| `rates-from` | Export rates from a start date | -| `rates-from-pos` | Export rates from a start position | -| `rates-range` | Export rates for a date range | -| `ticks-from` | Export ticks from a start date | -| `ticks-range` | Export ticks for a date range | -| `account-info` | Export account information | -| `terminal-info` | Export terminal information | -| `version` | Export MetaTrader 5 version information | -| `last-error` | Export the last error information | -| `symbols` | Export symbol list | -| `symbol-info` | Export symbol details | -| `symbol-info-tick` | Export the last tick for a symbol | -| `market-book` | Export market depth (order book) | -| `orders` | Export active orders | -| `positions` | Export open positions | -| `history-orders` | Export historical orders | -| `history-deals` | Export historical deals | -| `order-check` | Check funds sufficiency for a trade request | +| Command | Description | +| ------------------ | ----------------------------------------------------------- | +| `rates-from` | Export rates from a start date | +| `rates-from-pos` | Export rates from a start position | +| `rates-range` | Export rates for a date range | +| `ticks-from` | Export ticks from a start date | +| `ticks-range` | Export ticks for a date range | +| `account-info` | Export account information | +| `terminal-info` | Export terminal information | +| `version` | Export MetaTrader 5 version information | +| `last-error` | Export the last error information | +| `symbols` | Export symbol list | +| `symbol-info` | Export symbol details | +| `symbol-info-tick` | Export the last tick for a symbol | +| `market-book` | Export market depth (order book) | +| `orders` | Export active orders | +| `positions` | Export open positions | +| `history-orders` | Export historical orders | +| `history-deals` | Export historical deals | +| `order-check` | Check funds sufficiency for a trade request | | `order-send` | Send a trade request to the trade server (`--yes` required) | Use `order-check` to validate a request payload before running `order-send --yes`. diff --git a/docs/index.md b/docs/index.md index 010396f..9c2cdc4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -74,13 +74,13 @@ mt5cli --login 12345 --password mypass --server MyBroker-Demo \ ### Trading -| Command | Description | -| ---------------- | ------------------------------------------- | -| `orders` | Export active orders | -| `positions` | Export open positions | -| `history-orders` | Export historical orders | -| `history-deals` | Export historical deals | -| `order-check` | Check funds sufficiency for a trade request | +| Command | Description | +| ---------------- | ----------------------------------------------------------- | +| `orders` | Export active orders | +| `positions` | Export open positions | +| `history-orders` | Export historical orders | +| `history-deals` | Export historical deals | +| `order-check` | Check funds sufficiency for a trade request | | `order-send` | Send a trade request to the trade server (`--yes` required) | Use `order-check` to validate a request payload before running `order-send --yes`.