[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RVWQ617GHB05MPRJ86166R":3,"skill-same:01M6RVWQ617GHB05MPRJ86166R":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":13,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":72},"01M6RVWQ617GHB05MPRJ86166R","prediction-market-risk-review",null,"Review prediction-market, basket, oracle, and trading-agent workflows for compliance, safety, data-quality, privacy, and execution risk. Use before any workflow handles venue auth, user portfolio data, API keys, or trade planning.","sakamoto-family-smile\u002Fagent_monorepo","sakamoto-family-smile","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F132812403?v=4","01M6RTAT3H8PMWX5SJ65KP3VYF","01M6RTAV321WB5RAHCWTZMX5CV",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fecc\u002Fprediction-market-risk-review\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"prediction","prediction market risk review","risk","review","Market","use","api keys","prediction-market","for","keys","data-quality","trade","portfolio","api","execution","compliance","planning","auth","workflows","workflow","oracle","2026-11-10 10:12:30",false,"---\nname: be-recall\ndescription: \"Recall development rules and check for violations.\"\nargument-hint: \"[commit | tdd | build | coding | api | data]\"\nuser-invocable: true\nallowed-tools: Read, Glob, Grep, Bash\n---\n\n# Recall Rules\n\nDisplay development rules from the plugin CLAUDE.md and scan recent work for\nconcrete violations of them. Every check below names an exact scope (a git\nrange, a directory, a file glob) — report results against that scope only,\nnever as a claim about the whole codebase.\n\n## Instructions\n\n### Step 0: Validate Configuration\n\n1. Read `.claude\u002Fbackend-webflux-plugin.json`.\n2. If missing: show general rules from the plugin CLAUDE.md only, and skip\n   Step 3 entirely. Report: \"not verified: no\n   `.claude\u002Fbackend-webflux-plugin.json` found, so project-specific checks\n   (webLayer, dataProfile) cannot be scoped correctly. Showing rules only.\"\n   Guessing a profile instead of declaring it missing would risk scanning\n   the wrong file shapes (see the `api`\u002F`data` branching below).\n3. `pluginRoot`: the one line of `${CLAUDE_CONFIG_DIR:-$HOME\u002F.claude}\u002Fplugins\u002Fdata\u002Fbackend-webflux-plugin\u002FpluginRoot` (plugin CLAUDE.md § Configuration) — every `templates\u002F…` path in this document is `{pluginRoot}\u002Ftemplates\u002F…`, the plugin's own directory, not the project's; the plugin CLAUDE.md is `{pluginRoot}\u002FCLAUDE.md`; missing → stop: start a new session so the hook writes it.\n4. If present, read and hold onto two values — Step 3 branches on them so the\n   scan targets match what this project actually contains:\n   - `webLayer` (default `\"functional\"` if absent)\n   - `dataProfile` (default `\"both\"` if absent)\n\n### Step 1: Parse Argument\n\nMap argument to section:\n\n| Argument | Section | Source |\n|----------|---------|--------|\n| (none) | All rules summary | CLAUDE.md (all sections) |\n| `commit` | Commit Standards | CLAUDE.md § Commit Standards |\n| `tdd` | TDD Process + Test Scenario Writing | CLAUDE.md § Test-Driven Development + templates\u002Ftest-scenario-template.md |\n| `build` | Build Standards | CLAUDE.md § Build Standards |\n| `coding` | Coding Standards + Entity\u002FDTO Conventions | CLAUDE.md § Coding Standards |\n| `api` | API Conventions + Naming | CLAUDE.md § API Conventions + Naming Conventions |\n| `data` | Entity\u002FRepository\u002FMapper Conventions | templates\u002Fentity-conventions.md (shared) + templates\u002Fentity-conventions-r2dbc.md \u002F -mybatis.md (profile-specific) |\n\n### Step 2: Display Rules\n\nRead the relevant section(s) from the plugin CLAUDE.md and display them\nclearly in the working language.\n\nFor each rule, show:\n- The rule statement\n- Why it exists (one line — this is what lets the reader apply the rule to a\n  case the examples below don't cover)\n- A brief example (if applicable)\n\n### Step 3: Check for Violations\n\nBefore scanning, state the scope you're about to scan (the exact command or\ndirectory). If a scan cannot run at all (not a git repo, directory missing,\nfewer commits than the range needs), report \"not verified: \u003Creason>\" for\nthat check instead of skipping it silently or reporting zero violations —\nzero violations and \"couldn't scan\" look identical to the user unless you\nsay which one happened.\n\n#### `commit` violations:\n- Scope: `git log --oneline -5`.\n- If the command fails (not a git repo, no commits yet): \"not verified: no\n  git history available.\"\n- For each message, check: wrong tense, prefix usage (`fix:`, `feat:`, etc.),\n  exceeds 50 characters, lowercase start, missing blank line before body,\n  body lines exceeding 72 characters.\n\n#### `tdd` violations:\n- Scope: all test files under `{testDir}`.\n- If `{testDir}` doesn't exist: \"not verified: {testDir} not found.\"\n- For each test file, check:\n  - Test methods not using `snake_case` (method name doesn't match the\n    convention shown in Coding Standards, e.g.\n    `duplicate_email_returns_409_Conflict`)\n  - Missing assertions: a `@Test`\u002F`@ParameterizedTest` method whose body\n    contains none of `StepVerifier`, `assertThat`, `Assertions.`, or a\n    `.verify*()` call\n  - Test scenario format issues: a scenario list in a work document that\n    doesn't follow `templates\u002Ftest-scenario-template.md` — one lowercase,\n    present-tense sentence per scenario, usable as a snake_case test name\n    (there is no Given\u002FWhen\u002FThen shape in this plugin)\n\n#### `build` violations:\n- Scope: `build\u002F` directory presence\u002Ffreshness and `build.gradle(.kts)`\n  plugin configuration.\n- If `build\u002F` doesn't exist: \"not verified: no build output found — run\n  be-build or the configured build command, then re-run `be-recall build`.\"\n  This is not itself a violation; it means the check couldn't run.\n- If `build\u002F` exists, check:\n  - `build\u002F` older than the newest file under `{sourceDir}` (stale build —\n    suggests the last build predates the current code)\n  - `build.gradle(.kts)` missing the JaCoco plugin block when `coverage:\n    true` in config\n  - `build.gradle(.kts)` missing the Checkstyle plugin block when\n    `checkstyle: true` in config\n\n#### `coding` violations:\n- Scope: Java files from `git diff --name-only HEAD~3`.\n- If the repo has fewer than 3 commits: \"not verified: fewer than 3 commits\n  available; falling back to `git diff --name-only HEAD` (uncommitted\n  changes only).\" Use that fallback scope rather than reporting nothing.\n- For each file, check:\n  - Missing final newline\n  - Class where `record` should be used (DTOs — Command\u002FQuery\u002FView)\n  - Non-standard naming (check against the Naming Conventions table)\n\n#### `api` violations:\nBranch on the `webLayer` value read in Step 0 — a check written for one web\nlayer style finds nothing when run against the other, which reads as \"no\nviolations\" even when the code is riddled with them. Run exactly one branch.\n\n- If `webLayer == \"functional\"` (the plugin default — see CLAUDE.md § Web\n  Layer): scan `*Router.java` \u002F `*Handler.java` under each domain's `api\u002F`\n  directory for:\n  - Non-kebab-case path strings in `RequestPredicates.path(...)` \u002F route\n    builder calls\n  - Singular resource names in route paths (plural expected: `\u002Femployees`,\n    not `\u002Femployee`)\n  - `ServerResponse.status(...)` codes that don't match the API Conventions\n    table (e.g. a POST handler returning `200` instead of `201`)\n  - Missing handler-level `onErrorResume` mapping for a domain exception\n- If `webLayer == \"annotated\"` (the named exception — a domain deliberately\n  mirroring an existing annotated-controller module): scan `*Controller.java`\n  files for:\n  - Wrong `@GetMapping`\u002F`@PostMapping`\u002Fetc. for the action performed\n  - Non-kebab-case `@RequestMapping` paths\n  - Missing `@ResponseStatus`\n  - Singular resource names in URLs\n- Do not run the `@ResponseStatus`\u002F`*Controller.java` checks when\n  `webLayer == \"functional\"` — functional endpoints have no controller\n  classes at all, so that scan is a guaranteed false \"no violations.\"\n\n#### `data` violations:\nBranch on the `dataProfile` value read in Step 0 — same reasoning as `api`:\na profile-specific check run against the wrong profile finds nothing to\nscan and silently reports a clean result.\n\n- If `dataProfile` is `\"r2dbc\"` or `\"both\"`: scan R2DBC entity classes under\n  `data\u002F` for:\n  - Missing `sequence` + `id` dual key pattern\n  - Missing `@Table` annotation, non-snake_case table names\n  - Missing explicit `@Column` mapping\n- If `dataProfile` is `\"mybatis\"` or `\"both\"`: scan call sites of `*Mapper`\n  methods for:\n  - A mapper method invoked directly inside a `Mono`\u002F`Flux` chain without\n    `.subscribeOn(Schedulers.boundedElastic())` or an enclosing\n    `Mono.fromCallable(...)`\n- If `dataProfile == \"r2dbc\"`, skip the MyBatis mapper check — there are no\n  mappers in this project. If `dataProfile == \"mybatis\"`, skip the R2DBC\n  entity check — there are no R2DBC entities. Only `\"both\"` runs both\n  branches.\n\n### Step 4: Report\n\nLead with evidence, not the verdict: state what was scanned (the exact\ncommand\u002Fdirectory from Step 3, or the \"not verified: \u003Creason>\" line) before\nstating whether violations were found.\n\nDisplay each violation found with:\n- File path and line number\n- Rule violated\n- Suggested fix\n\nIf a check could not run, report it as its own line rather than omitting\nthe section or folding it into \"no violations\":\n> \"not verified: {reason}\"\n\nIf no violations found within the scanned scope:\n> \"No violations detected in {the stated scope, e.g. 'the last 5 commits'}.\"\n\nNever report the unscoped \"All rules are being followed\" — Step 3's checks\nonly cover the named scope (5 commits, 3 commits of diff, one directory),\nnot the project's full history or every file, so a blanket compliance claim\noverstates what was actually scanned.\n\nIf violations can be auto-fixed (e.g., missing final newline):\n> \"Auto-fixable violations found. Apply fixes? (y\u002Fn)\"\n\nApply fixes only with user confirmation.\n\n## Examples\n\n**Example 1 — clean run, scope stated**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall commit`\n\n1. Step 0 reads config (found; `webLayer`\u002F`dataProfile` unused for this arg).\n2. Step 2 displays the Commit Standards section.\n3. Step 3 runs `git log --oneline -5`, gets 5 messages, checks each against\n   the commit rules.\n4. Step 4 reports:\n   > Scanned: last 5 commits (`git log --oneline -5`).\n   > No violations detected in the last 5 commits.\n\n**Example 2 — webLayer branching catches a real violation**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall api`, config has\n`\"webLayer\": \"functional\"`.\n\n1. Step 0 reads config: `webLayer: \"functional\"`.\n2. Step 3 (`api` branch) scans `*Router.java` \u002F `*Handler.java` under\n   `employee\u002Fapi\u002F` — not `*Controller.java`, which would be the wrong style\n   for this project and would always report zero violations regardless of\n   the actual code.\n3. Finds `EmployeeHandler.java:42` returning `ServerResponse.status(200)`\n   from the `createEmployee` handler.\n4. Step 4 reports:\n   > Scanned: `EmployeeRouter.java`, `EmployeeHandler.java` under\n   > `employee\u002Fapi\u002F`.\n   > 1 violation found:\n   > - `EmployeeHandler.java:42` — POST handler returns `200 OK`; API\n   >   Conventions require `201 Created` for create. Fix:\n   >   `ServerResponse.status(HttpStatus.CREATED)`.\n\n**Example 3 — scan can't run, declared instead of skipped**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall build`, no `build\u002F` directory\nexists yet.\n\nStep 4 reports:\n> not verified: no `build\u002F` directory found — run `be-build` or the\n> configured build command first, then re-run `be-recall build`.\n","# Recall Rules\n\nDisplay development rules from the plugin CLAUDE.md and scan recent work for\nconcrete violations of them. Every check below names an exact scope (a git\nrange, a directory, a file glob) — report results against that scope only,\nnever as a claim about the whole codebase.\n\n## Instructions\n\n### Step 0: Validate Configuration\n\n1. Read `.claude\u002Fbackend-webflux-plugin.json`.\n2. If missing: show general rules from the plugin CLAUDE.md only, and skip\n   Step 3 entirely. Report: \"not verified: no\n   `.claude\u002Fbackend-webflux-plugin.json` found, so project-specific checks\n   (webLayer, dataProfile) cannot be scoped correctly. Showing rules only.\"\n   Guessing a profile instead of declaring it missing would risk scanning\n   the wrong file shapes (see the `api`\u002F`data` branching below).\n3. `pluginRoot`: the one line of `${CLAUDE_CONFIG_DIR:-$HOME\u002F.claude}\u002Fplugins\u002Fdata\u002Fbackend-webflux-plugin\u002FpluginRoot` (plugin CLAUDE.md § Configuration) — every `templates\u002F…` path in this document is `{pluginRoot}\u002Ftemplates\u002F…`, the plugin's own directory, not the project's; the plugin CLAUDE.md is `{pluginRoot}\u002FCLAUDE.md`; missing → stop: start a new session so the hook writes it.\n4. If present, read and hold onto two values — Step 3 branches on them so the\n   scan targets match what this project actually contains:\n   - `webLayer` (default `\"functional\"` if absent)\n   - `dataProfile` (default `\"both\"` if absent)\n\n### Step 1: Parse Argument\n\nMap argument to section:\n\n| Argument | Section | Source |\n|----------|---------|--------|\n| (none) | All rules summary | CLAUDE.md (all sections) |\n| `commit` | Commit Standards | CLAUDE.md § Commit Standards |\n| `tdd` | TDD Process + Test Scenario Writing | CLAUDE.md § Test-Driven Development + templates\u002Ftest-scenario-template.md |\n| `build` | Build Standards | CLAUDE.md § Build Standards |\n| `coding` | Coding Standards + Entity\u002FDTO Conventions | CLAUDE.md § Coding Standards |\n| `api` | API Conventions + Naming | CLAUDE.md § API Conventions + Naming Conventions |\n| `data` | Entity\u002FRepository\u002FMapper Conventions | templates\u002Fentity-conventions.md (shared) + templates\u002Fentity-conventions-r2dbc.md \u002F -mybatis.md (profile-specific) |\n\n### Step 2: Display Rules\n\nRead the relevant section(s) from the plugin CLAUDE.md and display them\nclearly in the working language.\n\nFor each rule, show:\n- The rule statement\n- Why it exists (one line — this is what lets the reader apply the rule to a\n  case the examples below don't cover)\n- A brief example (if applicable)\n\n### Step 3: Check for Violations\n\nBefore scanning, state the scope you're about to scan (the exact command or\ndirectory). If a scan cannot run at all (not a git repo, directory missing,\nfewer commits than the range needs), report \"not verified: \u003Creason>\" for\nthat check instead of skipping it silently or reporting zero violations —\nzero violations and \"couldn't scan\" look identical to the user unless you\nsay which one happened.\n\n#### `commit` violations:\n- Scope: `git log --oneline -5`.\n- If the command fails (not a git repo, no commits yet): \"not verified: no\n  git history available.\"\n- For each message, check: wrong tense, prefix usage (`fix:`, `feat:`, etc.),\n  exceeds 50 characters, lowercase start, missing blank line before body,\n  body lines exceeding 72 characters.\n\n#### `tdd` violations:\n- Scope: all test files under `{testDir}`.\n- If `{testDir}` doesn't exist: \"not verified: {testDir} not found.\"\n- For each test file, check:\n  - Test methods not using `snake_case` (method name doesn't match the\n    convention shown in Coding Standards, e.g.\n    `duplicate_email_returns_409_Conflict`)\n  - Missing assertions: a `@Test`\u002F`@ParameterizedTest` method whose body\n    contains none of `StepVerifier`, `assertThat`, `Assertions.`, or a\n    `.verify*()` call\n  - Test scenario format issues: a scenario list in a work document that\n    doesn't follow `templates\u002Ftest-scenario-template.md` — one lowercase,\n    present-tense sentence per scenario, usable as a snake_case test name\n    (there is no Given\u002FWhen\u002FThen shape in this plugin)\n\n#### `build` violations:\n- Scope: `build\u002F` directory presence\u002Ffreshness and `build.gradle(.kts)`\n  plugin configuration.\n- If `build\u002F` doesn't exist: \"not verified: no build output found — run\n  be-build or the configured build command, then re-run `be-recall build`.\"\n  This is not itself a violation; it means the check couldn't run.\n- If `build\u002F` exists, check:\n  - `build\u002F` older than the newest file under `{sourceDir}` (stale build —\n    suggests the last build predates the current code)\n  - `build.gradle(.kts)` missing the JaCoco plugin block when `coverage:\n    true` in config\n  - `build.gradle(.kts)` missing the Checkstyle plugin block when\n    `checkstyle: true` in config\n\n#### `coding` violations:\n- Scope: Java files from `git diff --name-only HEAD~3`.\n- If the repo has fewer than 3 commits: \"not verified: fewer than 3 commits\n  available; falling back to `git diff --name-only HEAD` (uncommitted\n  changes only).\" Use that fallback scope rather than reporting nothing.\n- For each file, check:\n  - Missing final newline\n  - Class where `record` should be used (DTOs — Command\u002FQuery\u002FView)\n  - Non-standard naming (check against the Naming Conventions table)\n\n#### `api` violations:\nBranch on the `webLayer` value read in Step 0 — a check written for one web\nlayer style finds nothing when run against the other, which reads as \"no\nviolations\" even when the code is riddled with them. Run exactly one branch.\n\n- If `webLayer == \"functional\"` (the plugin default — see CLAUDE.md § Web\n  Layer): scan `*Router.java` \u002F `*Handler.java` under each domain's `api\u002F`\n  directory for:\n  - Non-kebab-case path strings in `RequestPredicates.path(...)` \u002F route\n    builder calls\n  - Singular resource names in route paths (plural expected: `\u002Femployees`,\n    not `\u002Femployee`)\n  - `ServerResponse.status(...)` codes that don't match the API Conventions\n    table (e.g. a POST handler returning `200` instead of `201`)\n  - Missing handler-level `onErrorResume` mapping for a domain exception\n- If `webLayer == \"annotated\"` (the named exception — a domain deliberately\n  mirroring an existing annotated-controller module): scan `*Controller.java`\n  files for:\n  - Wrong `@GetMapping`\u002F`@PostMapping`\u002Fetc. for the action performed\n  - Non-kebab-case `@RequestMapping` paths\n  - Missing `@ResponseStatus`\n  - Singular resource names in URLs\n- Do not run the `@ResponseStatus`\u002F`*Controller.java` checks when\n  `webLayer == \"functional\"` — functional endpoints have no controller\n  classes at all, so that scan is a guaranteed false \"no violations.\"\n\n#### `data` violations:\nBranch on the `dataProfile` value read in Step 0 — same reasoning as `api`:\na profile-specific check run against the wrong profile finds nothing to\nscan and silently reports a clean result.\n\n- If `dataProfile` is `\"r2dbc\"` or `\"both\"`: scan R2DBC entity classes under\n  `data\u002F` for:\n  - Missing `sequence` + `id` dual key pattern\n  - Missing `@Table` annotation, non-snake_case table names\n  - Missing explicit `@Column` mapping\n- If `dataProfile` is `\"mybatis\"` or `\"both\"`: scan call sites of `*Mapper`\n  methods for:\n  - A mapper method invoked directly inside a `Mono`\u002F`Flux` chain without\n    `.subscribeOn(Schedulers.boundedElastic())` or an enclosing\n    `Mono.fromCallable(...)`\n- If `dataProfile == \"r2dbc\"`, skip the MyBatis mapper check — there are no\n  mappers in this project. If `dataProfile == \"mybatis\"`, skip the R2DBC\n  entity check — there are no R2DBC entities. Only `\"both\"` runs both\n  branches.\n\n### Step 4: Report\n\nLead with evidence, not the verdict: state what was scanned (the exact\ncommand\u002Fdirectory from Step 3, or the \"not verified: \u003Creason>\" line) before\nstating whether violations were found.\n\nDisplay each violation found with:\n- File path and line number\n- Rule violated\n- Suggested fix\n\nIf a check could not run, report it as its own line rather than omitting\nthe section or folding it into \"no violations\":\n> \"not verified: {reason}\"\n\nIf no violations found within the scanned scope:\n> \"No violations detected in {the stated scope, e.g. 'the last 5 commits'}.\"\n\nNever report the unscoped \"All rules are being followed\" — Step 3's checks\nonly cover the named scope (5 commits, 3 commits of diff, one directory),\nnot the project's full history or every file, so a blanket compliance claim\noverstates what was actually scanned.\n\nIf violations can be auto-fixed (e.g., missing final newline):\n> \"Auto-fixable violations found. Apply fixes? (y\u002Fn)\"\n\nApply fixes only with user confirmation.\n\n## Examples\n\n**Example 1 — clean run, scope stated**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall commit`\n\n1. Step 0 reads config (found; `webLayer`\u002F`dataProfile` unused for this arg).\n2. Step 2 displays the Commit Standards section.\n3. Step 3 runs `git log --oneline -5`, gets 5 messages, checks each against\n   the commit rules.\n4. Step 4 reports:\n   > Scanned: last 5 commits (`git log --oneline -5`).\n   > No violations detected in the last 5 commits.\n\n**Example 2 — webLayer branching catches a real violation**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall api`, config has\n`\"webLayer\": \"functional\"`.\n\n1. Step 0 reads config: `webLayer: \"functional\"`.\n2. Step 3 (`api` branch) scans `*Router.java` \u002F `*Handler.java` under\n   `employee\u002Fapi\u002F` — not `*Controller.java`, which would be the wrong style\n   for this project and would always report zero violations regardless of\n   the actual code.\n3. Finds `EmployeeHandler.java:42` returning `ServerResponse.status(200)`\n   from the `createEmployee` handler.\n4. Step 4 reports:\n   > Scanned: `EmployeeRouter.java`, `EmployeeHandler.java` under\n   > `employee\u002Fapi\u002F`.\n   > 1 violation found:\n   > - `EmployeeHandler.java:42` — POST handler returns `200 OK`; API\n   >   Conventions require `201 Created` for create. Fix:\n   >   `ServerResponse.status(HttpStatus.CREATED)`.\n\n**Example 3 — scan can't run, declared instead of skipped**\n\nInput: `\u002Fbackend-webflux-plugin:be-recall build`, no `build\u002F` directory\nexists yet.\n\nStep 4 reports:\n> not verified: no `build\u002F` directory found — run `be-build` or the\n> configured build command first, then re-run `be-recall build`.\n",{"name":49,"description":50,"allowed-tools":51,"argument-hint":52,"user-invocable":53},"be-recall","Recall development rules and check for violations.","Read, Glob, Grep, Bash","[commit | tdd | build | coding | api | data]",true,"main","99f07e592261c66756a2927d0440fc5fef950507",".claude\u002Fskills\u002Fecc\u002Fprediction-market-risk-review","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile","2026-11-08 20:29:14",{"source":8,"skillName":49,"commands":61,"prompt":71,"zipAvailable":53},[62,65,68],{"tool":63,"command":64},"npx","npx skills add sakamoto-family-smile\u002Fagent_monorepo --skill be-recall",{"tool":66,"command":67},"bunx","bunx skills add sakamoto-family-smile\u002Fagent_monorepo --skill be-recall",{"tool":69,"command":70},"pnpm","pnpm dlx skills add sakamoto-family-smile\u002Fagent_monorepo --skill be-recall","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fecc\u002Fprediction-market-risk-review\u002FSKILL.md",[],[74,108,116,133,156,182],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":88,"publishedAt":44},"01M6RW50THEFSKK42YNR8XFZA1","remotion-video-creation","Best practices for Remotion - Video creation in React. 29 domain-specific rules covering 3D, animations, audio, captions, charts, transitions, and more.","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fecc\u002Fremotion-video-creation\u002FSKILL.md",[80,85],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000016","图像与多媒体",[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,31],"Video","remotion video","remotion video creation","creation","Remotion","Charts","Captions","Audio","3D","Composition","Animation","best practices","more","animations","domain-specific","domain","three","Rules","Lottie",{"skillNo":109,"name":110,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":44},"01M6VCJ23NPECPSZJKGY691F75","hotcook-recipes","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002Fhotcook-agent\u002Fdata\u002Fskills\u002Fhotcook-recipes\u002FSKILL.md",[],[114,115],"hotcook recipes","recipes",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":128,"publishedAt":44},"01M6VCHHE00X5XHSDRD1KH1BW2","code-helper","Code review and assistance skill","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002Fagent-system-2\u002Fskills\u002Fcode-helper\u002Fskill.md",[122,125],{"categoryNo":123,"categoryName":124,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":126,"categoryName":127,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师",[129,130,131,132,26],"code helper","helper","code","code review",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":145,"publishedAt":44},"01M6VCH3Q31A20H6SQ1H0J7JB2","research-assistant","Web research assistant skill using Brave Search MCP","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002Fagent-system-1\u002Fskills\u002Fresearch-assistant\u002Fskill.md",[139,142],{"categoryNo":140,"categoryName":141,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":143,"categoryName":144,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",[146,147,148,149,150,151,152,153,154,155],"research assistant","research","assistant","MCP","web","search","brave search","web research","brave","web research assistant",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":166,"publishedAt":44},"01M6VCGZZGPNVJSCZ1JTMNZAHY","x-api","X\u002FTwitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fecc\u002Fx-api\u002FSKILL.md",[162,165],{"categoryNo":163,"categoryName":164,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":126,"categoryName":127,"taxonomyType":20,"taxonomyTypeDesc":21},[167,36,168,169,170,171,31,172,173,174,175,176,177,178,179,28,40,180,151,181],"x api","with","when","limits","rate","threads","reading","native","posting","platform","patterns","api integration","twitter","analytics","OAuth",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":189,"publishedAt":44},"01M6VCGVX6DGB1FKTA53QBBCQB","workspace-surface-audit","Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows. Use when the user wants help setting up Claude Code or understanding what capabilities are actually available in their environment.","https:\u002F\u002Fgithub.com\u002Fsakamoto-family-smile\u002Fagent_monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fecc\u002Fworkspace-surface-audit\u002FSKILL.md",[188],{"categoryNo":143,"categoryName":144,"taxonomyType":83,"taxonomyTypeDesc":84},[190,191,192,193,149,41,194,131,195,196,197,198,28,199,200,201,202,174,203,169],"workspace surface audit","workspace","audit","hooks","connectors","capabilities","harness","repo","environment","up","harness setup","active","env","value"]