ソース情報
- リポジトリ
- lefant/agent-skills
- ソースの最終更新活動
- 2026年2月4日 10:28
- 検出された SKILL.md の言語
- 英語
- スター
- 1
- フォーク
- 1
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/lefant/agent-skills --skill test-analyzerコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SOC 職業分類に基づく
SKILL.md を表示中
| name | test-analyzer |
| description | Analyze test failures from CTRF reports using jq for deterministic parsing |
| invocationPattern | when user asks to analyze test failures, investigate failing tests, or understand test patterns |
Analyze CTRF test reports to identify failure patterns, suggest fixes, and provide insights into test health. Uses deterministic jq parsing for efficient, token-friendly analysis.
Call this skill when:
Using ctrf-utils.sh:
ctrf-utils.sh summary <file> # Show pass/fail summary
ctrf-utils.sh failures <file...> # List failed test names
ctrf-utils.sh failures-detail <file> # Show failures with error messages
ctrf-utils.sh flaky <file> # Show tests with retry attempts
ctrf-utils.sh slowest <N> <file> # Show N slowest tests
Direct jq commands:
jq '.results.summary' report.ctrf.json
jq -r '.results.tests[] | select(.status == "failed") | .name' report.ctrf.json
CTRF reports have this structure:
{
"results": {
"tool": { "name": "vitest" },
"summary": { "tests": 50, "passed": 48, "failed": 2, "skipped": 0 },
"tests": [
{
"name": "should validate user input",
"status": "failed",
"duration": 156,
"suite": "UserForm",
"message": "Expected true, received false",
"filePath":
Required fields per test: name, status, duration
Full schema: ctrf-schema.json
jq '.results.summary' /workspace/artifacts/test/vitest.ctrf.json
jq -r '.results.summary | "Tests: \(.tests) | Passed: \(.passed) | Failed: \(.failed)"' /workspace/artifacts/test/vitest.ctrf.json
jq -r '.results.tests[] | select(.status == "failed") | .name' /workspace/artifacts/test/*.ctrf.json
jq -r '.results.tests[] | select(.status == "failed") | "❌ \(.name): \(.message // "No message")"' /workspace/artifacts/test/*.ctrf.json
jq '[.results.tests[] | select(.status == "failed")] | group_by(.message) | map({error: .[0].message, count: length, tests: map(.name)}) | sort_by(.count) | reverse' /workspace/artifacts/test/*.ctrf.json
jq '.results.tests | sort_by(.duration) | reverse | limit(10; .[]) | {name, duration}' /workspace/artifacts/test/vitest.ctrf.json
jq -r '.results.tests[] | select(.retries > 0 or .flaky == true) | "⚠️ \(.name) (retries: \(.retries // 0))"' /workspace/artifacts/test/*.ctrf.json
jq -r '[.results.tests[] | select(.status == "failed") | .filePath] | unique | .[]' /workspace/artifacts/test/vitest.ctrf.json
jq -s '{vitest: .[0].results.summary.failed, pytest: .[1].results.summary.failed, total: ((.[0].results.summary.failed // 0) + (.[1].results.summary.failed // 0))}' /workspace/artifacts/test/vitest.ctrf.json /workspace/artifacts/test/pytest.ctrf.json
jq -c '{summary: .results.summary, failures: [.results.tests[] | select(.status == "failed") | {name, suite, message, file: "\(.filePath):\(.line)"}]}' /workspace/artifacts/test/*.ctrf.json
For comprehensive examples (24+), see: jq-examples-comprehensive.md
Implementation scripts:
Context and research behind this approach:
When invoked:
Locate CTRF reports (common locations: artifacts/test/, test-results/, project root)
Get summary:
jq -r '.results.summary | "Tests: \(.tests) | Passed: \(.passed) | Failed: \(.failed)"' *.ctrf.json
If failures exist, list them:
jq -r '.results.tests[] | select(.status == "failed") | "❌ \(.name): \(.message // "No message")"' *.ctrf.json
Analyze patterns (group similar errors):
jq '[.results.tests[] | select(.status == "failed")] | group_by(.message) | map({error: .[0].message, count: length})' *.ctrf.json
Read source files for failed tests (extract file paths with jq, then read)
Suggest fixes based on patterns (group similar errors, identify root causes)