| name | aget-file-issue |
| description | File issues with L520 governance compliance |
| archetype | universal |
| allowed-tools | ["Bash","Read","Grep"] |
/aget-file-issue
File issues to appropriate repositories with L520 governance compliance (routing + sanitization).
Purpose
Structured issue filing with:
- Automatic destination routing based on agent type
- Content sanitization for public issues
- Template selection (enhancement, bug, feature)
Input
/aget-file-issue <type> [title]
| Type | Description | Template |
|---|
enhancement | Feature enhancement | ENHANCEMENT_REQUEST |
bug | Bug report | BUG_REPORT |
feature | New feature | FEATURE_REQUEST |
Execution
Step 1: Detect Agent Type
if grep -q "gmelli\|private-" <<< "$PWD"; then
AGENT_TYPE="private"
elif grep -q '"fleet".*"private"' .aget/version.json 2>/dev/null; then
AGENT_TYPE="private"
elif git remote -v 2>/dev/null | grep -q "gmelli/"; then
AGENT_TYPE="private"
else
AGENT_TYPE="public"
fi
Step 2: Determine Destination
| Agent Type | Destination |
|---|
| Private Fleet | {private-tracker} |
| Public/Remote | aget-framework/aget |
Step 3: Prepare Content
For private agents filing to public repo, sanitize:
| Pattern | Replacement |
|---|
private-*-aget | [PRIVATE-AGENT] |
private-*-AGET | [PRIVATE-AGENT] |
gmelli/* | [INTERNAL-REPO] |
\d+ agents? in fleet | [N agents] |
SESSION_\d{4}-\d{2}-\d{2} | [SESSION] |
Step 4: Validate
Check required fields:
- Title present
- Type valid (enhancement, bug, feature)
- Body not empty (for bugs)
Step 5: File Issue
gh issue create \
--repo {private-tracker} \
--title "$TITLE" \
--body "$BODY" \
--label "type:$TYPE"
gh issue create \
--repo aget-framework/aget \
--title "$TITLE" \
--body "$SANITIZED_BODY" \
--label "type:$TYPE"
Step 6: Report
Output:
Issue filed: <URL>
Destination: <repo>
Type: <type>
Sanitization: <applied/not-needed>
Output Format
## Issue Filed
| Field | Value |
|-------|-------|
| URL | https://github.com/aget-framework/aget/issues/123 |
| Destination | aget-framework/aget |
| Type | enhancement |
| Sanitization | applied |
**Content Sanitized**:
- 2 private agent names redacted
- 1 internal repo reference redacted
Constraints
These are INVIOLABLE:
- C1: NEVER file to public repo from private agent without sanitization
- C2: NEVER include private agent names (
private-*-aget, private-*-AGET) in public issues
- C3: NEVER include fleet size disclosures in public issues
- C4: NEVER include internal repo references (
gmelli/*) in public issues
- C5: ALWAYS validate destination before filing
- C6: ALWAYS report sanitization actions taken
Examples
Example 1: Private Agent Filing Enhancement
/aget-file-issue enhancement Add skill validation
Result: Files to {private-tracker} (no sanitization needed)
Example 2: Public Agent Filing Bug
/aget-file-issue bug Template fails on Windows
Result: Files to aget-framework/aget (sanitization checked, none needed)
Example 3: Private Agent with Sensitive Content
If body contains private-work-supervisor-AGET noticed an issue...:
Result: Sanitized to [PRIVATE-AGENT] noticed an issue... before filing to public repo
Error Handling
| Error | Response |
|---|
| No gh CLI | "Error: gh CLI not installed. Install via: brew install gh" |
| Not authenticated | "Error: gh not authenticated. Run: gh auth login" |
| Missing title | "Error: Title required. Usage: /aget-file-issue "
|
| Invalid type | "Error: Invalid type. Use: enhancement, bug, feature" |
| Sanitization failed | "Error: Could not sanitize. Review content manually." |
Related
- L520: Issue Governance Gap
- AGET_ISSUE_GOVERNANCE_SPEC: R-ISSUE-001 through R-ISSUE-010
- SKILL-040: aget-file-issue specification
- validate_issue_destination.py
- sanitize_issue_content.py
Traceability
| Link | Reference |
|---|
| Spec | SKILL-040_aget-file-issue.yaml |
| L-doc | L520 (Issue Governance Gap) |
| Project | PROJECT_PLAN_archetype_customization_v3.5_v1.0.md Gate 6 |
aget-file-issue v1.0.0
Category: Governance
Archetype: Universal (14th universal skill)