- name
- intelligencex-tools-authoring
- description
- Use when creating or refactoring IntelligenceX tools to maximize helper reuse, reduce duplication, and keep stable tool contracts.
# Skill: intelligencex-tools-authoring
Use this skill when changing files in `IntelligenceX.Tools/**`, especially when adding new tools or consolidating helper logic.
## Trigger Phrases
- "new tool"
- "tooling refactor"
- "reduce duplication in tools"
- "centralize tool helpers"
- "tool contract cleanup"
## Strict Execution Order
1. Identify target package and existing base helpers.
2. Reuse shared helper paths first (`ToolBase`, `ToolQueryHelpers`, `ToolPipeline`, package base helpers).
3. Build typed request binder (`ToolRequestBinder` + `ToolRequestBindingResult<TRequest>`).
4. Implement tool/refactor changes with no output contract drift, using `ToolResultV2` for output envelopes.
5. Add or update tests for helper behavior and edge cases.
6. Run targeted build/tests for changed tool packages.
7. Summarize reusable pattern changes for future tools.
## Commands
- Targeted build:
- `dotnet build IntelligenceX.Tools/IntelligenceX.Tools.ADPlayground/IntelligenceX.Tools.ADPlayground.csproj -c Release`
- `dotnet build IntelligenceX.Tools/IntelligenceX.Tools.EventLog/IntelligenceX.Tools.EventLog.csproj -c Release`
- `dotnet build IntelligenceX.Tools/IntelligenceX.Tools.System/IntelligenceX.Tools.System.csproj -c Release`
- Targeted tests:
- `dotnet test IntelligenceX.Tools/IntelligenceX.Tools.Tests/IntelligenceX.Tools.Tests.csproj -c Release`
- Full tool solution gate:
- `dotnet test IntelligenceX.Tools/IntelligenceX.Tools.sln -c Release`
## Fail-Fast Rules
- Do not add package-specific duplicate helpers when a shared helper exists.
- Do not change `error_code`/metadata/table view contracts without explicit intent.
- Do not add `max_results` metadata with direct `meta.Add("max_results", ...)`; use `AddMaxResultsMeta(...)`.
- Keep mass normalization (for example line endings) in a dedicated cleanup PR, not mixed with behavior changes.
- Prefer typed request models over direct `arguments?.Get...` reads in new/refactored tools.
- Prefer middleware composition over inline precondition blocks when preconditions are reusable.
- For AD tools with required `domain_name`, use canonical helpers (`TryReadRequiredDomainQueryRequest`, `TryReadPolicyAttributionToolRequest`, `ExecuteDomainRowsViewTool`, `ExecutePolicyAttributionTool`).
## References
- `InternalDocs/agent-playbooks/tool-authoring-playbook.md`
- `templates/tool-pipeline-template.md`
Ver en GitHub