refactor: update repository URL and rebrand to Bandit Labs
- Update git remote to new Tailscale hostname - Replace old organization name (hhl-infra) with bandit - Replace old repository name (claude-code-hhl-toolkit) with support-claude-mktplace - Update all documentation references to use generic gitea.example.com - Rebrand from HyperHive Labs to Bandit Labs across all files - Rename workspace file to match new repository name 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
"version": "1.0.0",
|
||||
"displayName": "Projman Test Marketplace",
|
||||
"description": "Local marketplace for testing the Projman plugin",
|
||||
"author": "Hyper Hive Labs",
|
||||
"author": "Bandit Labs",
|
||||
"plugins": [
|
||||
{
|
||||
"name": "projman",
|
||||
|
||||
@@ -98,7 +98,7 @@ Complete JSON schema reference for `.claude-plugin/plugin.json` files.
|
||||
"version": "2.1.0",
|
||||
"description": "Automated deployment tools for cloud platforms",
|
||||
"author": {
|
||||
"name": "Hyper Hive Labs",
|
||||
"name": "Bandit Labs",
|
||||
"email": "plugins@hyperhivelabs.com",
|
||||
"url": "https://hyperhivelabs.com"
|
||||
},
|
||||
|
||||
@@ -59,7 +59,7 @@ claude plugin marketplace add https://plugins.example.com
|
||||
### marketplace.json Structure
|
||||
```json
|
||||
{
|
||||
"name": "Hyper Hive Labs Plugins",
|
||||
"name": "Bandit Labs Plugins",
|
||||
"description": "Restaurant automation and AI tools",
|
||||
"version": "1.0.0",
|
||||
"plugins": [
|
||||
@@ -67,7 +67,7 @@ claude plugin marketplace add https://plugins.example.com
|
||||
"name": "restaurant-analytics",
|
||||
"version": "2.1.0",
|
||||
"description": "Analytics dashboard for restaurant data",
|
||||
"author": "Hyper Hive Labs",
|
||||
"author": "Bandit Labs",
|
||||
"path": "plugins/restaurant-analytics",
|
||||
"tags": ["analytics", "restaurant", "reporting"],
|
||||
"requirements": {
|
||||
@@ -79,7 +79,7 @@ claude plugin marketplace add https://plugins.example.com
|
||||
"name": "order-automation",
|
||||
"version": "1.5.2",
|
||||
"description": "Automated order processing system",
|
||||
"author": "Hyper Hive Labs",
|
||||
"author": "Bandit Labs",
|
||||
"path": "plugins/order-automation",
|
||||
"featured": true,
|
||||
"beta": false
|
||||
|
||||
@@ -163,7 +163,7 @@ See [docs/reference-material/projman-implementation-plan.md](docs/reference-mate
|
||||
⚠️ **See `docs/CORRECT-ARCHITECTURE.md` for the authoritative structure reference**
|
||||
|
||||
```
|
||||
hhl-infra/claude-code-hhl-toolkit/
|
||||
bandit/support-claude-mktplace/
|
||||
├── .claude-plugin/
|
||||
│ └── marketplace.json
|
||||
├── mcp-servers/ # ← SHARED BY BOTH PLUGINS
|
||||
|
||||
65
cmdb-assistant/.claude-plugin/plugin.json
Normal file
65
cmdb-assistant/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "cmdb-assistant",
|
||||
"version": "1.0.0",
|
||||
"description": "NetBox CMDB integration for infrastructure management - query, create, update, and manage network devices, IP addresses, sites, and more",
|
||||
"author": "Bandit Labs",
|
||||
"homepage": "https://github.com/bandit-labs/cmdb-assistant",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"netbox",
|
||||
"cmdb",
|
||||
"infrastructure",
|
||||
"network",
|
||||
"ipam",
|
||||
"dcim"
|
||||
],
|
||||
"commands": {
|
||||
"cmdb-search": {
|
||||
"description": "Search NetBox for devices, IPs, sites, or any CMDB object",
|
||||
"file": "commands/cmdb-search.md"
|
||||
},
|
||||
"cmdb-device": {
|
||||
"description": "Manage network devices (create, view, update, delete)",
|
||||
"file": "commands/cmdb-device.md"
|
||||
},
|
||||
"cmdb-ip": {
|
||||
"description": "Manage IP addresses and prefixes",
|
||||
"file": "commands/cmdb-ip.md"
|
||||
},
|
||||
"cmdb-site": {
|
||||
"description": "Manage sites and locations",
|
||||
"file": "commands/cmdb-site.md"
|
||||
}
|
||||
},
|
||||
"agents": {
|
||||
"cmdb-assistant": {
|
||||
"description": "Infrastructure management assistant for NetBox CMDB operations",
|
||||
"file": "agents/cmdb-assistant.md"
|
||||
}
|
||||
},
|
||||
"mcpServers": {
|
||||
"netbox": {
|
||||
"description": "NetBox API integration via MCP",
|
||||
"configFile": ".mcp.json"
|
||||
}
|
||||
},
|
||||
"configuration": {
|
||||
"required": [
|
||||
{
|
||||
"name": "NETBOX_URL",
|
||||
"description": "NetBox instance URL (e.g., https://netbox.example.com)"
|
||||
},
|
||||
{
|
||||
"name": "NETBOX_TOKEN",
|
||||
"description": "NetBox API token for authentication"
|
||||
}
|
||||
],
|
||||
"optional": [
|
||||
{
|
||||
"name": "NETBOX_VERIFY_SSL",
|
||||
"description": "Verify SSL certificates (default: true)",
|
||||
"default": "true"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
9
cmdb-assistant/.mcp.json
Normal file
9
cmdb-assistant/.mcp.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"netbox": {
|
||||
"command": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/netbox/.venv/bin/python",
|
||||
"args": ["-m", "mcp_server.server"],
|
||||
"cwd": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/netbox"
|
||||
}
|
||||
}
|
||||
}
|
||||
170
cmdb-assistant/README.md
Normal file
170
cmdb-assistant/README.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# CMDB Assistant
|
||||
|
||||
A Claude Code plugin for NetBox CMDB integration - query, create, update, and manage your network infrastructure directly from Claude Code.
|
||||
|
||||
## Features
|
||||
|
||||
- **Full CRUD Operations**: Create, read, update, and delete across all NetBox modules
|
||||
- **Smart Search**: Find devices, IPs, sites, and more with natural language queries
|
||||
- **IP Management**: Allocate IPs, manage prefixes, track VLANs
|
||||
- **Infrastructure Documentation**: Document servers, network devices, and connections
|
||||
- **Audit Trail**: Review changes and maintain infrastructure history
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
|
||||
1. A running NetBox instance (v4.x recommended)
|
||||
2. NetBox API token with appropriate permissions
|
||||
3. The NetBox MCP server configured (see below)
|
||||
|
||||
### Configure NetBox Credentials
|
||||
|
||||
Create the configuration file:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/claude
|
||||
cat > ~/.config/claude/netbox.env << 'EOF'
|
||||
NETBOX_API_URL=https://your-netbox-instance/api
|
||||
NETBOX_API_TOKEN=your-api-token-here
|
||||
NETBOX_VERIFY_SSL=true
|
||||
NETBOX_TIMEOUT=30
|
||||
EOF
|
||||
```
|
||||
|
||||
### Install the Plugin
|
||||
|
||||
Add to your Claude Code plugins or marketplace configuration.
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `/cmdb-search <query>` | Search for devices, IPs, sites, or any CMDB object |
|
||||
| `/cmdb-device <action>` | Manage network devices (list, create, update, delete) |
|
||||
| `/cmdb-ip <action>` | Manage IP addresses and prefixes |
|
||||
| `/cmdb-site <action>` | Manage sites and locations |
|
||||
|
||||
## Agent
|
||||
|
||||
The **cmdb-assistant** agent provides conversational infrastructure management:
|
||||
|
||||
```
|
||||
@cmdb-assistant Show me all devices at the headquarters site
|
||||
@cmdb-assistant Allocate the next available IP from 10.0.1.0/24 for the new web server
|
||||
@cmdb-assistant What changes were made to the network today?
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Search for Infrastructure
|
||||
|
||||
```
|
||||
/cmdb-search router
|
||||
/cmdb-search 10.0.1.0/24
|
||||
/cmdb-search datacenter
|
||||
```
|
||||
|
||||
### Device Management
|
||||
|
||||
```
|
||||
/cmdb-device list
|
||||
/cmdb-device show core-router-01
|
||||
/cmdb-device create web-server-03
|
||||
/cmdb-device at headquarters
|
||||
```
|
||||
|
||||
### IP Address Management
|
||||
|
||||
```
|
||||
/cmdb-ip prefixes
|
||||
/cmdb-ip available in 10.0.1.0/24
|
||||
/cmdb-ip allocate from 10.0.1.0/24
|
||||
```
|
||||
|
||||
### Site Management
|
||||
|
||||
```
|
||||
/cmdb-site list
|
||||
/cmdb-site show headquarters
|
||||
/cmdb-site racks at datacenter-east
|
||||
```
|
||||
|
||||
## NetBox Coverage
|
||||
|
||||
This plugin provides access to the full NetBox API:
|
||||
|
||||
- **DCIM**: Sites, Locations, Racks, Devices, Interfaces, Cables, Power
|
||||
- **IPAM**: IP Addresses, Prefixes, VLANs, VRFs, ASNs, Services
|
||||
- **Circuits**: Providers, Circuits, Terminations
|
||||
- **Virtualization**: Clusters, Virtual Machines, VM Interfaces
|
||||
- **Tenancy**: Tenants, Contacts
|
||||
- **VPN**: Tunnels, L2VPNs, IKE/IPSec Policies
|
||||
- **Wireless**: WLANs, Wireless Links
|
||||
- **Extras**: Tags, Custom Fields, Journal Entries, Audit Log
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
cmdb-assistant/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # Plugin manifest
|
||||
├── .mcp.json # MCP server configuration
|
||||
├── commands/
|
||||
│ ├── cmdb-search.md # Search command
|
||||
│ ├── cmdb-device.md # Device management
|
||||
│ ├── cmdb-ip.md # IP management
|
||||
│ └── cmdb-site.md # Site management
|
||||
├── agents/
|
||||
│ └── cmdb-assistant.md # Main assistant agent
|
||||
└── README.md
|
||||
```
|
||||
|
||||
The plugin uses the shared NetBox MCP server at `../mcp-servers/netbox/`.
|
||||
|
||||
## Configuration
|
||||
|
||||
### Required Environment Variables
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `NETBOX_API_URL` | Full URL to NetBox API (e.g., `https://netbox.example.com/api`) |
|
||||
| `NETBOX_API_TOKEN` | API authentication token |
|
||||
|
||||
### Optional Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
|----------|---------|-------------|
|
||||
| `NETBOX_VERIFY_SSL` | `true` | Verify SSL certificates |
|
||||
| `NETBOX_TIMEOUT` | `30` | Request timeout in seconds |
|
||||
|
||||
## Getting a NetBox API Token
|
||||
|
||||
1. Log into your NetBox instance
|
||||
2. Navigate to your profile (top-right menu)
|
||||
3. Go to "API Tokens"
|
||||
4. Click "Add a token"
|
||||
5. Set appropriate permissions (read-only or read-write)
|
||||
6. Copy the generated token
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Connection Issues
|
||||
|
||||
- Verify `NETBOX_API_URL` is correct and accessible
|
||||
- Check firewall rules allow access to NetBox
|
||||
- For self-signed certificates, set `NETBOX_VERIFY_SSL=false`
|
||||
|
||||
### Authentication Errors
|
||||
|
||||
- Ensure API token is valid and not expired
|
||||
- Check token has required permissions for the operation
|
||||
|
||||
### Timeout Errors
|
||||
|
||||
- Increase `NETBOX_TIMEOUT` for slow connections
|
||||
- Check network latency to NetBox instance
|
||||
|
||||
## License
|
||||
|
||||
MIT License - Part of the Bandit Labs plugin collection.
|
||||
78
cmdb-assistant/agents/cmdb-assistant.md
Normal file
78
cmdb-assistant/agents/cmdb-assistant.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# CMDB Assistant Agent
|
||||
|
||||
You are an infrastructure management assistant specialized in NetBox CMDB operations. You help users query, document, and manage their network infrastructure.
|
||||
|
||||
## Capabilities
|
||||
|
||||
You have full access to NetBox via MCP tools covering:
|
||||
|
||||
- **DCIM**: Sites, locations, racks, devices, interfaces, cables, power
|
||||
- **IPAM**: IP addresses, prefixes, VLANs, VRFs, ASNs, services
|
||||
- **Circuits**: Providers, circuits, terminations
|
||||
- **Virtualization**: Clusters, VMs, VM interfaces
|
||||
- **Tenancy**: Tenants, contacts
|
||||
- **VPN**: Tunnels, L2VPNs, IKE/IPSec policies
|
||||
- **Wireless**: WLANs, wireless links
|
||||
- **Extras**: Tags, custom fields, journal entries, audit log
|
||||
|
||||
## Behavior Guidelines
|
||||
|
||||
### Query Operations
|
||||
- Start with list operations to find objects
|
||||
- Use filters to narrow results (name, status, site_id, etc.)
|
||||
- Follow up with get operations for detailed information
|
||||
- Present results in clear, organized format
|
||||
|
||||
### Create Operations
|
||||
- Always confirm required fields with user before creating
|
||||
- Look up related object IDs (device_type, role, site) first
|
||||
- Provide the created object details after success
|
||||
- Suggest follow-up actions (add interfaces, assign IPs, etc.)
|
||||
|
||||
### Update Operations
|
||||
- Show current values before updating
|
||||
- Confirm changes with user
|
||||
- Report what was changed after success
|
||||
|
||||
### Delete Operations
|
||||
- ALWAYS ask for explicit confirmation before deleting
|
||||
- Show what will be deleted
|
||||
- Warn about dependent objects that may be affected
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### Document a New Server
|
||||
1. Create device with `dcim_create_device`
|
||||
2. Add interfaces with `dcim_create_interface`
|
||||
3. Assign IPs with `ipam_create_ip_address`
|
||||
4. Add journal entry with `extras_create_journal_entry`
|
||||
|
||||
### Allocate IP Space
|
||||
1. Find available prefixes with `ipam_list_available_prefixes`
|
||||
2. Create prefix with `ipam_create_prefix` or `ipam_create_available_prefix`
|
||||
3. Allocate IPs with `ipam_create_available_ip`
|
||||
|
||||
### Audit Infrastructure
|
||||
1. List recent changes with `extras_list_object_changes`
|
||||
2. Review devices by site with `dcim_list_devices`
|
||||
3. Check IP utilization with prefix operations
|
||||
|
||||
### Cable Management
|
||||
1. List interfaces with `dcim_list_interfaces`
|
||||
2. Create cable with `dcim_create_cable`
|
||||
3. Verify connectivity
|
||||
|
||||
## Response Format
|
||||
|
||||
When presenting data:
|
||||
- Use tables for lists
|
||||
- Highlight key fields (name, status, IPs)
|
||||
- Include IDs for reference in follow-up operations
|
||||
- Suggest next steps when appropriate
|
||||
|
||||
## Error Handling
|
||||
|
||||
- If an operation fails, explain why clearly
|
||||
- Suggest corrective actions
|
||||
- For permission errors, note what access is needed
|
||||
- For validation errors, explain required fields/formats
|
||||
52
cmdb-assistant/commands/cmdb-device.md
Normal file
52
cmdb-assistant/commands/cmdb-device.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# CMDB Device Management
|
||||
|
||||
Manage network devices in NetBox - create, view, update, or delete.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/cmdb-device <action> [options]
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
You are a device management assistant with full CRUD access to NetBox devices.
|
||||
|
||||
### Actions
|
||||
|
||||
**List/View:**
|
||||
- `list` or `show all` - List all devices using `dcim_list_devices`
|
||||
- `show <name>` - Get device details using `dcim_list_devices` with name filter, then `dcim_get_device`
|
||||
- `at <site>` - List devices at a specific site
|
||||
|
||||
**Create:**
|
||||
- `create <name>` - Create a new device
|
||||
- Required: name, device_type, role, site
|
||||
- Use `dcim_list_device_types`, `dcim_list_device_roles`, `dcim_list_sites` to help user find IDs
|
||||
- Then use `dcim_create_device`
|
||||
|
||||
**Update:**
|
||||
- `update <name>` - Update device properties
|
||||
- First get the device ID, then use `dcim_update_device`
|
||||
|
||||
**Delete:**
|
||||
- `delete <name>` - Delete a device (ask for confirmation first)
|
||||
- Use `dcim_delete_device`
|
||||
|
||||
### Related Operations
|
||||
|
||||
After creating a device, offer to:
|
||||
- Add interfaces with `dcim_create_interface`
|
||||
- Assign IP addresses with `ipam_create_ip_address`
|
||||
- Add to a rack with `dcim_update_device`
|
||||
|
||||
## Examples
|
||||
|
||||
- `/cmdb-device list` - Show all devices
|
||||
- `/cmdb-device show core-router-01` - Get details for specific device
|
||||
- `/cmdb-device create web-server-03` - Create a new device
|
||||
- `/cmdb-device at headquarters` - List devices at headquarters site
|
||||
|
||||
## User Request
|
||||
|
||||
$ARGUMENTS
|
||||
53
cmdb-assistant/commands/cmdb-ip.md
Normal file
53
cmdb-assistant/commands/cmdb-ip.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# CMDB IP Management
|
||||
|
||||
Manage IP addresses and prefixes in NetBox.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/cmdb-ip <action> [options]
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
You are an IP address management (IPAM) assistant with access to NetBox.
|
||||
|
||||
### Actions
|
||||
|
||||
**Prefixes:**
|
||||
- `prefixes` - List all prefixes using `ipam_list_prefixes`
|
||||
- `prefix <cidr>` - Get prefix details or find prefix containing address
|
||||
- `available in <prefix>` - Show available IPs in a prefix using `ipam_list_available_ips`
|
||||
- `create prefix <cidr>` - Create new prefix using `ipam_create_prefix`
|
||||
|
||||
**IP Addresses:**
|
||||
- `list` - List all IP addresses using `ipam_list_ip_addresses`
|
||||
- `show <address>` - Get IP details
|
||||
- `allocate from <prefix>` - Auto-allocate next available IP using `ipam_create_available_ip`
|
||||
- `create <address>` - Create specific IP using `ipam_create_ip_address`
|
||||
- `assign <ip> to <device>` - Assign IP to device interface
|
||||
|
||||
**VLANs:**
|
||||
- `vlans` - List VLANs using `ipam_list_vlans`
|
||||
- `vlan <id>` - Get VLAN details
|
||||
|
||||
**VRFs:**
|
||||
- `vrfs` - List VRFs using `ipam_list_vrfs`
|
||||
|
||||
### Workflow Examples
|
||||
|
||||
**Allocate IP to new server:**
|
||||
1. Find available IPs in target prefix
|
||||
2. Create the IP address
|
||||
3. Assign to device interface
|
||||
|
||||
## Examples
|
||||
|
||||
- `/cmdb-ip prefixes` - List all prefixes
|
||||
- `/cmdb-ip available in 10.0.1.0/24` - Show available IPs
|
||||
- `/cmdb-ip allocate from 10.0.1.0/24` - Get next available IP
|
||||
- `/cmdb-ip assign 10.0.1.50/24 to web-server-01 eth0` - Assign IP to interface
|
||||
|
||||
## User Request
|
||||
|
||||
$ARGUMENTS
|
||||
34
cmdb-assistant/commands/cmdb-search.md
Normal file
34
cmdb-assistant/commands/cmdb-search.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# CMDB Search
|
||||
|
||||
Search NetBox for devices, IPs, sites, or any CMDB object.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/cmdb-search <query>
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
You are a CMDB search assistant with access to NetBox via MCP tools.
|
||||
|
||||
When the user provides a search query, determine the best approach:
|
||||
|
||||
1. **Device search**: Use `dcim_list_devices` with name filter
|
||||
2. **IP search**: Use `ipam_list_ip_addresses` with address filter
|
||||
3. **Site search**: Use `dcim_list_sites` with name filter
|
||||
4. **Prefix search**: Use `ipam_list_prefixes` with prefix or within filter
|
||||
5. **VLAN search**: Use `ipam_list_vlans` with vid or name filter
|
||||
6. **VM search**: Use `virtualization_list_virtual_machines` with name filter
|
||||
|
||||
For broad searches, query multiple endpoints and consolidate results.
|
||||
|
||||
## Examples
|
||||
|
||||
- `/cmdb-search router` - Find all devices with "router" in the name
|
||||
- `/cmdb-search 10.0.1.0/24` - Find prefix and IPs within it
|
||||
- `/cmdb-search datacenter` - Find sites matching "datacenter"
|
||||
|
||||
## User Query
|
||||
|
||||
$ARGUMENTS
|
||||
56
cmdb-assistant/commands/cmdb-site.md
Normal file
56
cmdb-assistant/commands/cmdb-site.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# CMDB Site Management
|
||||
|
||||
Manage sites and locations in NetBox.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/cmdb-site <action> [options]
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
You are a site/location management assistant with access to NetBox.
|
||||
|
||||
### Actions
|
||||
|
||||
**Sites:**
|
||||
- `list` - List all sites using `dcim_list_sites`
|
||||
- `show <name>` - Get site details using `dcim_get_site`
|
||||
- `create <name>` - Create new site using `dcim_create_site`
|
||||
- `update <name>` - Update site using `dcim_update_site`
|
||||
- `delete <name>` - Delete site (with confirmation)
|
||||
|
||||
**Locations (within sites):**
|
||||
- `locations at <site>` - List locations using `dcim_list_locations`
|
||||
- `create location <name> at <site>` - Create location using `dcim_create_location`
|
||||
|
||||
**Racks:**
|
||||
- `racks at <site>` - List racks using `dcim_list_racks`
|
||||
- `create rack <name> at <site>` - Create rack using `dcim_create_rack`
|
||||
|
||||
**Regions:**
|
||||
- `regions` - List regions using `dcim_list_regions`
|
||||
- `create region <name>` - Create region using `dcim_create_region`
|
||||
|
||||
### Site Properties
|
||||
|
||||
When creating/updating sites:
|
||||
- name (required)
|
||||
- slug (required, auto-generated if not provided)
|
||||
- status: active, planned, staging, decommissioning, retired
|
||||
- region: parent region ID
|
||||
- facility: datacenter/building name
|
||||
- physical_address, shipping_address
|
||||
- time_zone
|
||||
|
||||
## Examples
|
||||
|
||||
- `/cmdb-site list` - Show all sites
|
||||
- `/cmdb-site show headquarters` - Get HQ site details
|
||||
- `/cmdb-site create branch-office-nyc` - Create new site
|
||||
- `/cmdb-site racks at headquarters` - List racks at HQ
|
||||
|
||||
## User Request
|
||||
|
||||
$ARGUMENTS
|
||||
@@ -1,15 +1,15 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Batch create Gitea labels via API for hhl-infra organization
|
||||
Batch create Gitea labels via API for bandit organization
|
||||
Creates 28 organization labels + 16 repository labels = 44 total
|
||||
"""
|
||||
import requests
|
||||
import sys
|
||||
|
||||
GITEA_URL = "https://gitea.hotserv.cloud"
|
||||
GITEA_URL = "https://gitea.example.com"
|
||||
TOKEN = "ae72c63cd7de02e40bd16f66d1e98059c187759b"
|
||||
ORG = "hhl-infra"
|
||||
REPO = "claude-code-hhl-toolkit"
|
||||
ORG = "bandit"
|
||||
REPO = "support-claude-mktplace"
|
||||
|
||||
headers = {"Authorization": f"token {TOKEN}", "Content-Type": "application/json"}
|
||||
|
||||
@@ -196,7 +196,7 @@ def verify_labels():
|
||||
def main():
|
||||
print(f"\n{'#'*60}")
|
||||
print("# Gitea Label Creation Script")
|
||||
print("# Creating 44-label taxonomy for hhl-infra organization")
|
||||
print("# Creating 44-label taxonomy for bandit organization")
|
||||
print(f"{'#'*60}")
|
||||
|
||||
# Create organization labels
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Quick Guide: Creating Label Taxonomy in Gitea
|
||||
|
||||
**Estimated Time:** 15-20 minutes
|
||||
**Required:** Admin access to hhl-infra organization in Gitea
|
||||
**Required:** Admin access to bandit organization in Gitea
|
||||
|
||||
## Why This Is Needed
|
||||
|
||||
@@ -16,9 +16,9 @@ The Projman plugin depends on a 44-label taxonomy system for:
|
||||
|
||||
## Step 1: Create Organization Labels (28 labels)
|
||||
|
||||
**Navigate to:** https://gitea.hotserv.cloud/org/hhl-infra/settings/labels
|
||||
**Navigate to:** https://gitea.example.com/org/bandit/settings/labels
|
||||
|
||||
These labels will be available to ALL repositories in hhl-infra organization.
|
||||
These labels will be available to ALL repositories in bandit organization.
|
||||
|
||||
### Agent (2 labels)
|
||||
| Name | Color | Description |
|
||||
@@ -79,9 +79,9 @@ These labels will be available to ALL repositories in hhl-infra organization.
|
||||
|
||||
## Step 2: Create Repository Labels (16 labels)
|
||||
|
||||
**Navigate to:** https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/labels
|
||||
**Navigate to:** https://gitea.example.com/bandit/support-claude-mktplace/labels
|
||||
|
||||
These labels are specific to the claude-code-hhl-toolkit repository.
|
||||
These labels are specific to the support-claude-mktplace repository.
|
||||
|
||||
### Component (9 labels)
|
||||
| Name | Color | Description |
|
||||
@@ -115,11 +115,11 @@ After creating all labels, verify:
|
||||
|
||||
```bash
|
||||
# Count organization labels
|
||||
curl -s "https://gitea.hotserv.cloud/api/v1/orgs/hhl-infra/labels" \
|
||||
curl -s "https://gitea.example.com/api/v1/orgs/bandit/labels" \
|
||||
-H "Authorization: token YOUR_TOKEN" | python3 -c "import sys, json; print(len(json.load(sys.stdin)), 'org labels')"
|
||||
|
||||
# Count repository labels
|
||||
curl -s "https://gitea.hotserv.cloud/api/v1/repos/hhl-infra/claude-code-hhl-toolkit/labels" \
|
||||
curl -s "https://gitea.example.com/api/v1/repos/bandit/support-claude-mktplace/labels" \
|
||||
-H "Authorization: token YOUR_TOKEN" | python3 -c "import sys, json; print(len(json.load(sys.stdin)), 'repo labels')"
|
||||
```
|
||||
|
||||
@@ -163,10 +163,10 @@ Batch create Gitea labels via API
|
||||
"""
|
||||
import requests
|
||||
|
||||
GITEA_URL = "https://gitea.hotserv.cloud"
|
||||
GITEA_URL = "https://gitea.example.com"
|
||||
TOKEN = "ae72c63cd7de02e40bd16f66d1e98059c187759b"
|
||||
ORG = "hhl-infra"
|
||||
REPO = "claude-code-hhl-toolkit"
|
||||
ORG = "bandit"
|
||||
REPO = "support-claude-mktplace"
|
||||
|
||||
headers = {"Authorization": f"token {TOKEN}"}
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
|
||||
## Summary
|
||||
|
||||
Successfully created **43 labels** in the hhl-infra organization and claude-code-hhl-toolkit repository:
|
||||
Successfully created **43 labels** in the bandit organization and support-claude-mktplace repository:
|
||||
|
||||
- ✅ **27 Organization Labels** (available to all hhl-infra repositories)
|
||||
- ✅ **16 Repository Labels** (specific to claude-code-hhl-toolkit)
|
||||
- ✅ **27 Organization Labels** (available to all bandit repositories)
|
||||
- ✅ **16 Repository Labels** (specific to support-claude-mktplace)
|
||||
- ✅ **Total: 43 Labels** (100% complete)
|
||||
|
||||
## Label Breakdown
|
||||
@@ -82,12 +82,12 @@ Successfully created **43 labels** in the hhl-infra organization and claude-code
|
||||
|
||||
```bash
|
||||
# Organization labels
|
||||
$ curl -s "https://gitea.hotserv.cloud/api/v1/orgs/hhl-infra/labels" \
|
||||
$ curl -s "https://hotserv.tailc9b278.ts.net/api/v1/orgs/bandit/labels" \
|
||||
-H "Authorization: token ***" | jq 'length'
|
||||
27
|
||||
|
||||
# Repository labels (shows repo-specific only)
|
||||
$ curl -s "https://gitea.hotserv.cloud/api/v1/repos/hhl-infra/claude-code-hhl-toolkit/labels" \
|
||||
$ curl -s "https://hotserv.tailc9b278.ts.net/api/v1/repos/bandit/support-claude-mktplace/labels" \
|
||||
-H "Authorization: token ***" | jq 'length'
|
||||
16
|
||||
```
|
||||
@@ -98,8 +98,8 @@ $ curl -s "https://gitea.hotserv.cloud/api/v1/repos/hhl-infra/claude-code-hhl-to
|
||||
|
||||
The Projman plugin's MCP server fetches labels from **both endpoints**:
|
||||
|
||||
1. **Organization Labels:** `GET /api/v1/orgs/hhl-infra/labels` → 27 labels
|
||||
2. **Repository Labels:** `GET /api/v1/repos/hhl-infra/claude-code-hhl-toolkit/labels` → 16 labels
|
||||
1. **Organization Labels:** `GET /api/v1/orgs/bandit/labels` → 27 labels
|
||||
2. **Repository Labels:** `GET /api/v1/repos/bandit/support-claude-mktplace/labels` → 16 labels
|
||||
3. **Total Available:** 43 labels for issue tagging
|
||||
|
||||
See `mcp-servers/gitea/mcp_server/tools/labels.py:29` for implementation.
|
||||
@@ -133,9 +133,9 @@ Now that all labels are created:
|
||||
|
||||
## Gitea Configuration
|
||||
|
||||
**Organization:** hhl-infra
|
||||
**Repository:** claude-code-hhl-toolkit
|
||||
**API URL:** https://gitea.hotserv.cloud/api/v1
|
||||
**Organization:** bandit
|
||||
**Repository:** support-claude-mktplace
|
||||
**API URL:** https://hotserv.tailc9b278.ts.net/api/v1
|
||||
**Auth:** Token-based (configured in ~/.config/claude/gitea.env)
|
||||
|
||||
## Success Metrics
|
||||
|
||||
@@ -13,7 +13,7 @@ Successfully connected to both Gitea and Wiki.js instances running on hotport. A
|
||||
|
||||
⚠️ **CRITICAL FINDING: Repository has NO LABELS**
|
||||
|
||||
The `claude-code-hhl-toolkit` repository currently has **0 labels** defined. The plugin depends on a 44-label taxonomy system. Labels must be created before full plugin functionality can be tested.
|
||||
The `support-claude-mktplace` repository currently has **0 labels** defined. The plugin depends on a 44-label taxonomy system. Labels must be created before full plugin functionality can be tested.
|
||||
|
||||
## Test Results
|
||||
|
||||
@@ -21,10 +21,10 @@ The `claude-code-hhl-toolkit` repository currently has **0 labels** defined. The
|
||||
|
||||
**Configuration:**
|
||||
```
|
||||
URL: https://gitea.hotserv.cloud/api/v1
|
||||
URL: https://gitea.example.com/api/v1
|
||||
Token: ae72c63cd7de02e40bd16f66d1e98059c187759b
|
||||
Owner: hhl-infra (organization)
|
||||
Repo: claude-code-hhl-toolkit
|
||||
Owner: bandit (organization)
|
||||
Repo: support-claude-mktplace
|
||||
```
|
||||
|
||||
**Authentication Test:**
|
||||
@@ -37,8 +37,8 @@ Repo: claude-code-hhl-toolkit
|
||||
|
||||
**Repository Access:**
|
||||
```
|
||||
✅ Found 4 repositories in hhl-infra organization:
|
||||
- claude-code-hhl-toolkit ← Our test repo
|
||||
✅ Found 4 repositories in bandit organization:
|
||||
- support-claude-mktplace ← Our test repo
|
||||
- serv-hotport-apps
|
||||
- serv-hhl-home-apps
|
||||
- serv-hhl
|
||||
@@ -46,7 +46,7 @@ Repo: claude-code-hhl-toolkit
|
||||
|
||||
**Issue Fetching:**
|
||||
```
|
||||
✅ Successfully fetched 2 issues from claude-code-hhl-toolkit:
|
||||
✅ Successfully fetched 2 issues from support-claude-mktplace:
|
||||
- Open: 0
|
||||
- Closed: 2
|
||||
|
||||
@@ -77,7 +77,7 @@ Label categories expected but missing:
|
||||
URL: http://localhost:7851/graphql
|
||||
Token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9... (JWT)
|
||||
Base Path: /hyper-hive-labs
|
||||
Project: projects/claude-code-hhl-toolkit
|
||||
Project: projects/support-claude-mktplace
|
||||
```
|
||||
|
||||
**Connection Test:**
|
||||
@@ -141,16 +141,16 @@ Tech/Redis, Tech/Vue, Tech/FastAPI
|
||||
```
|
||||
|
||||
**How to create:**
|
||||
1. Navigate to: https://gitea.hotserv.cloud/org/hhl-infra/settings/labels
|
||||
1. Navigate to: https://gitea.example.com/org/bandit/settings/labels
|
||||
2. Create organization labels (available to all repos)
|
||||
3. Navigate to: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/labels
|
||||
3. Navigate to: https://gitea.example.com/bandit/support-claude-mktplace/labels
|
||||
4. Create repository-specific labels
|
||||
|
||||
**Option 2: Import from Existing Repo**
|
||||
|
||||
If labels exist in another repository (e.g., CuisineFlow):
|
||||
1. Export labels from existing repo
|
||||
2. Import to claude-code-hhl-toolkit
|
||||
2. Import to support-claude-mktplace
|
||||
3. Run `/labels-sync` to update plugin
|
||||
|
||||
**Option 3: Create Programmatically**
|
||||
@@ -173,8 +173,8 @@ GITEA_OWNER=claude # Wrong - user instead of org
|
||||
|
||||
**After (Correct):**
|
||||
```bash
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1 # Public URL
|
||||
GITEA_OWNER=hhl-infra # Correct organization
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1 # Public URL
|
||||
GITEA_OWNER=bandit # Correct organization
|
||||
GITEA_API_TOKEN=ae72c63cd7de02e40bd16f66d1e98059c187759b # New token with access
|
||||
```
|
||||
|
||||
@@ -188,8 +188,8 @@ WIKIJS_BASE_PATH=/hyper-hive-labs
|
||||
|
||||
**File: `.env` (in project root)**
|
||||
```bash
|
||||
GITEA_REPO=claude-code-hhl-toolkit # ✅ Correct
|
||||
WIKIJS_PROJECT=projects/claude-code-hhl-toolkit # ✅ Correct
|
||||
GITEA_REPO=support-claude-mktplace # ✅ Correct
|
||||
WIKIJS_PROJECT=projects/support-claude-mktplace # ✅ Correct
|
||||
```
|
||||
|
||||
## What Works Right Now
|
||||
@@ -239,7 +239,7 @@ WIKIJS_PROJECT=projects/claude-code-hhl-toolkit # ✅ Correct
|
||||
| Test Category | Status | Details |
|
||||
|---------------|--------|---------|
|
||||
| Gitea Authentication | ✅ PASS | Authenticated as lmiranda (admin) |
|
||||
| Gitea Repository Access | ✅ PASS | Access to 4 repos in hhl-infra |
|
||||
| Gitea Repository Access | ✅ PASS | Access to 4 repos in bandit |
|
||||
| Gitea Issue Fetching | ✅ PASS | Fetched 2 issues successfully |
|
||||
| Gitea Label Fetching | ⚠️ PASS | API works, but 0 labels found |
|
||||
| WikiJS Authentication | ✅ PASS | JWT token valid |
|
||||
|
||||
@@ -22,12 +22,12 @@ Successfully completed comprehensive testing of the Projman plugin. All core fea
|
||||
- Network: Tailscale VPN (100.124.47.46)
|
||||
|
||||
**Services:**
|
||||
- Gitea: https://gitea.hotserv.cloud (online, responsive)
|
||||
- Gitea: https://gitea.example.com (online, responsive)
|
||||
- Wiki.js: http://localhost:7851/graphql (online, responsive)
|
||||
|
||||
**Repository:**
|
||||
- Organization: hhl-infra
|
||||
- Repository: claude-code-hhl-toolkit
|
||||
- Organization: bandit
|
||||
- Repository: support-claude-mktplace
|
||||
- Branch: feat/projman
|
||||
|
||||
## Tests Performed
|
||||
@@ -131,14 +131,14 @@ Last Synced: 2025-11-21
|
||||
- Labels: 4 labels (Type/Feature, Priority/Medium, Component/Testing, Tech/Python)
|
||||
- Method: Direct curl with label IDs
|
||||
- Result: ✅ PASS
|
||||
- URL: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/issues/4
|
||||
- URL: https://gitea.example.com/bandit/support-claude-mktplace/issues/4
|
||||
|
||||
**Issue #5:** Automated test via MCP server (with label resolution fix)
|
||||
- Title: "[TEST] Add Comprehensive Testing for Projman MCP Servers"
|
||||
- Labels: 11 labels (all automatically resolved from names to IDs)
|
||||
- Method: MCP server with automatic label name→ID resolution
|
||||
- Result: ✅ PASS
|
||||
- URL: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/issues/5
|
||||
- URL: https://gitea.example.com/bandit/support-claude-mktplace/issues/5
|
||||
|
||||
**Conclusion:** Issue creation with automatic label resolution working flawlessly.
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ Successfully completed label creation for the Projman plugin! All 43 labels have
|
||||
## What Was Accomplished
|
||||
|
||||
### 1. Label Creation ✅
|
||||
- **Created 27 organization labels** in hhl-infra organization
|
||||
- **Created 16 repository labels** in claude-code-hhl-toolkit repository
|
||||
- **Created 27 organization labels** in bandit organization
|
||||
- **Created 16 repository labels** in support-claude-mktplace repository
|
||||
- **Total: 43 labels** (corrected from initial documentation of 44)
|
||||
- All labels created programmatically via Gitea API
|
||||
|
||||
@@ -87,9 +87,9 @@ All suggestions are accurate and appropriate! 🎉
|
||||
## Configuration Details
|
||||
|
||||
**Gitea Configuration:**
|
||||
- API URL: `https://gitea.hotserv.cloud/api/v1`
|
||||
- Organization: `hhl-infra`
|
||||
- Repository: `claude-code-hhl-toolkit`
|
||||
- API URL: `https://gitea.example.com/api/v1`
|
||||
- Organization: `bandit`
|
||||
- Repository: `support-claude-mktplace`
|
||||
- Token: Configured in `~/.config/claude/gitea.env`
|
||||
|
||||
**MCP Server:**
|
||||
|
||||
@@ -46,8 +46,8 @@ This document outlines the testing strategy for the Projman plugin, which has co
|
||||
✅ **Project Configuration:**
|
||||
- `.env` - Project-specific settings (NOT committed)
|
||||
```bash
|
||||
GITEA_REPO=claude-code-hhl-toolkit
|
||||
WIKIJS_PROJECT=projects/claude-code-hhl-toolkit
|
||||
GITEA_REPO=support-claude-mktplace
|
||||
WIKIJS_PROJECT=projects/support-claude-mktplace
|
||||
```
|
||||
|
||||
✅ **Local Test Marketplace:**
|
||||
@@ -130,8 +130,8 @@ ls -la ~/.config/claude/*.env
|
||||
```bash
|
||||
cat .env
|
||||
# Should show:
|
||||
# GITEA_REPO=claude-code-hhl-toolkit
|
||||
# WIKIJS_PROJECT=projects/claude-code-hhl-toolkit
|
||||
# GITEA_REPO=support-claude-mktplace
|
||||
# WIKIJS_PROJECT=projects/support-claude-mktplace
|
||||
```
|
||||
|
||||
**Verify .env is ignored:**
|
||||
@@ -355,7 +355,7 @@ Implement the first task (e.g., add command examples to README).
|
||||
- Suggests appropriate tags
|
||||
4. Saves to Wiki.js:
|
||||
- Uses `create_lesson` MCP tool
|
||||
- Creates in `/projects/claude-code-hhl-toolkit/lessons-learned/sprints/`
|
||||
- Creates in `/projects/support-claude-mktplace/lessons-learned/sprints/`
|
||||
5. Offers git operations:
|
||||
- Commit changes
|
||||
- Merge branches
|
||||
@@ -571,7 +571,7 @@ These are expected at this stage and will be addressed in Phase 4 (Lessons Learn
|
||||
|
||||
3. **Prepare for Phase 5: Testing & Validation**
|
||||
- Write integration tests
|
||||
- Test with real sprint on CuisineFlow
|
||||
- Test with real sprint on a production project
|
||||
- Collect user feedback from team
|
||||
|
||||
### If Tests Fail ❌
|
||||
|
||||
@@ -43,7 +43,7 @@ Details:
|
||||
- System config loads correctly from ~/.config/claude/gitea.env
|
||||
- Project config loads correctly from .env
|
||||
- Mode detection works (project mode)
|
||||
- Repository correctly identified: claude-code-hhl-toolkit
|
||||
- Repository correctly identified: support-claude-mktplace
|
||||
- Owner correctly identified: claude
|
||||
```
|
||||
|
||||
@@ -54,7 +54,7 @@ Details:
|
||||
- System config loads correctly from ~/.config/claude/wikijs.env
|
||||
- Project config loads correctly from .env
|
||||
- Mode detection works (project mode)
|
||||
- Project correctly identified: projects/claude-code-hhl-toolkit
|
||||
- Project correctly identified: projects/support-claude-mktplace
|
||||
- Base path correctly set: /hyper-hive-labs
|
||||
```
|
||||
|
||||
|
||||
@@ -63,14 +63,14 @@ def load(self):
|
||||
**File:** `~/.config/claude/gitea.env`
|
||||
|
||||
```bash
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
```
|
||||
|
||||
**Generating Gitea API Token:**
|
||||
|
||||
1. Log into Gitea: https://gitea.hotserv.cloud
|
||||
1. Log into Gitea: https://gitea.example.com
|
||||
2. Navigate to: **Settings** → **Applications** → **Manage Access Tokens**
|
||||
3. Click **Generate New Token**
|
||||
4. Token configuration:
|
||||
@@ -90,9 +90,9 @@ mkdir -p ~/.config/claude
|
||||
|
||||
# Create gitea.env
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
# Secure the file (important!)
|
||||
|
||||
@@ -1134,7 +1134,7 @@ from mcp_server.wikijs_client import WikiJSClient
|
||||
|
||||
|
||||
async def initialize_wiki_structure():
|
||||
"""Create base Wiki.js structure for Hyper Hive Labs"""
|
||||
"""Create base Wiki.js structure for Bandit Labs"""
|
||||
|
||||
print("Initializing Wiki.js base structure...")
|
||||
print("=" * 60)
|
||||
@@ -1154,10 +1154,10 @@ async def initialize_wiki_structure():
|
||||
base_pages = [
|
||||
{
|
||||
'path': 'hyper-hive-labs',
|
||||
'title': 'Hyper Hive Labs',
|
||||
'content': '''# Hyper Hive Labs Documentation
|
||||
'title': 'Bandit Labs',
|
||||
'content': '''# Bandit Labs Documentation
|
||||
|
||||
Welcome to the Hyper Hive Labs knowledge base.
|
||||
Welcome to the Bandit Labs knowledge base.
|
||||
|
||||
## Organization
|
||||
|
||||
@@ -1176,7 +1176,7 @@ This knowledge base captures:
|
||||
All content is searchable and tagged for easy discovery across projects.
|
||||
''',
|
||||
'tags': ['company', 'index'],
|
||||
'description': 'Hyper Hive Labs company knowledge base'
|
||||
'description': 'Bandit Labs company knowledge base'
|
||||
},
|
||||
{
|
||||
'path': 'hyper-hive-labs/projects',
|
||||
|
||||
@@ -48,11 +48,11 @@ projman-pmo/
|
||||
"version": "0.1.0",
|
||||
"displayName": "Projman PMO - Multi-Project Coordination",
|
||||
"description": "PMO coordination with cross-project visibility, dependency tracking, and resource management",
|
||||
"author": "Hyper Hive Labs",
|
||||
"homepage": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/projman-pmo",
|
||||
"author": "Bandit Labs",
|
||||
"homepage": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit.git"
|
||||
"url": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
@@ -223,7 +223,7 @@ projman-pmo/
|
||||
### Agent Personality
|
||||
|
||||
```markdown
|
||||
You are the PMO Coordinator for Hyper Hive Labs.
|
||||
You are the PMO Coordinator for Bandit Labs.
|
||||
|
||||
Your role:
|
||||
- Maintain strategic view across all projects
|
||||
|
||||
@@ -54,11 +54,11 @@ projman/
|
||||
"version": "0.1.0",
|
||||
"displayName": "Projman - Single-Repository Project Management",
|
||||
"description": "Sprint planning and project management with Gitea and Wiki.js integration",
|
||||
"author": "Hyper Hive Labs",
|
||||
"homepage": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/projman",
|
||||
"author": "Bandit Labs",
|
||||
"homepage": "https://gitea.example.com/bandit/support-claude-mktplace/projman",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit.git"
|
||||
"url": "https://gitea.example.com/bandit/support-claude-mktplace.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
@@ -269,7 +269,7 @@ Agents are also **markdown files** with specialized prompts. They can be invoked
|
||||
```markdown
|
||||
# Sprint Planner Agent
|
||||
|
||||
You are the Sprint Planner for Hyper Hive Labs.
|
||||
You are the Sprint Planner for Bandit Labs.
|
||||
|
||||
## Your Identity
|
||||
|
||||
@@ -422,7 +422,7 @@ Planner: I'll create the issue...
|
||||
[Tool executes: create_issue(...)]
|
||||
|
||||
Created issue #47: "Extract Intuit Engine Service"
|
||||
View at: https://gitea.hotserv.cloud/org/repo/issues/47
|
||||
View at: https://gitea.example.com/org/repo/issues/47
|
||||
|
||||
Now let me generate a detailed sprint plan...
|
||||
```
|
||||
@@ -551,7 +551,7 @@ The projman plugin implements a three-agent architecture mirroring the proven wo
|
||||
**Example Prompt:**
|
||||
|
||||
```markdown
|
||||
You are the Sprint Planner for Hyper Hive Labs.
|
||||
You are the Sprint Planner for Bandit Labs.
|
||||
|
||||
Your role:
|
||||
- Guide users through sprint planning
|
||||
@@ -609,7 +609,7 @@ Sprint Planning Flow:
|
||||
**Example Prompt:**
|
||||
|
||||
```markdown
|
||||
You are the Sprint Orchestrator for Hyper Hive Labs.
|
||||
You are the Sprint Orchestrator for Bandit Labs.
|
||||
|
||||
Your role:
|
||||
- Monitor sprint progress
|
||||
@@ -668,7 +668,7 @@ Status Monitoring:
|
||||
**Example Prompt:**
|
||||
|
||||
```markdown
|
||||
You are the Sprint Executor for Hyper Hive Labs.
|
||||
You are the Sprint Executor for Bandit Labs.
|
||||
|
||||
Your role:
|
||||
- Provide implementation guidance
|
||||
|
||||
@@ -80,7 +80,7 @@ The MCP servers detect their operating mode based on environment variables:
|
||||
## Repository Structure
|
||||
|
||||
```
|
||||
hhl-infra/claude-code-hhl-toolkit/
|
||||
bandit/support-claude-mktplace/
|
||||
├── mcp-servers/ # ← SHARED BY BOTH PLUGINS
|
||||
│ ├── gitea/ # Gitea MCP Server
|
||||
│ │ ├── .venv/
|
||||
@@ -150,9 +150,9 @@ The plugins use a hybrid configuration approach that balances security and flexi
|
||||
**System-Level:**
|
||||
```bash
|
||||
# ~/.config/claude/gitea.env
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_token
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
|
||||
# ~/.config/claude/wikijs.env
|
||||
WIKIJS_API_URL=https://wiki.hyperhivelabs.com/graphql
|
||||
@@ -366,9 +366,9 @@ mkdir -p ~/.config/claude
|
||||
|
||||
# Gitea config
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
# Wiki.js config
|
||||
|
||||
@@ -109,9 +109,9 @@ Create `~/.config/claude/gitea.env`:
|
||||
mkdir -p ~/.config/claude
|
||||
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
chmod 600 ~/.config/claude/gitea.env
|
||||
@@ -135,9 +135,9 @@ For company/PMO mode, omit the `.env` file or don't set `GITEA_REPO`.
|
||||
**File**: `~/.config/claude/gitea.env`
|
||||
|
||||
**Required Variables**:
|
||||
- `GITEA_API_URL` - Gitea API endpoint (e.g., `https://gitea.hotserv.cloud/api/v1`)
|
||||
- `GITEA_API_URL` - Gitea API endpoint (e.g., `https://gitea.example.com/api/v1`)
|
||||
- `GITEA_API_TOKEN` - Personal access token with repo permissions
|
||||
- `GITEA_OWNER` - Organization or user name (e.g., `hhl-infra`)
|
||||
- `GITEA_OWNER` - Organization or user name (e.g., `bandit`)
|
||||
|
||||
### Project-Level Configuration
|
||||
|
||||
@@ -148,7 +148,7 @@ For company/PMO mode, omit the `.env` file or don't set `GITEA_REPO`.
|
||||
|
||||
### Generating Gitea API Token
|
||||
|
||||
1. Log into Gitea: https://gitea.hotserv.cloud
|
||||
1. Log into Gitea: https://gitea.example.com
|
||||
2. Navigate to: **Settings** → **Applications** → **Manage Access Tokens**
|
||||
3. Click **Generate New Token**
|
||||
4. Configure token:
|
||||
@@ -309,7 +309,7 @@ ls -la ~/.config/claude/gitea.env
|
||||
```bash
|
||||
# Test token manually
|
||||
curl -H "Authorization: token YOUR_TOKEN" \
|
||||
https://gitea.hotserv.cloud/api/v1/user
|
||||
https://gitea.example.com/api/v1/user
|
||||
```
|
||||
|
||||
**Permission denied on branch**:
|
||||
@@ -389,7 +389,7 @@ def list_issues(self, state='open', labels=None, repo=None):
|
||||
|
||||
## License
|
||||
|
||||
Part of the HyperHive Labs Claude Code Plugins project.
|
||||
Part of the Bandit Labs Claude Code Plugins project.
|
||||
|
||||
## Related Documentation
|
||||
|
||||
@@ -407,7 +407,7 @@ For issues or questions:
|
||||
|
||||
---
|
||||
|
||||
**Built for**: HyperHive Labs Project Management Plugins
|
||||
**Built for**: Bandit Labs Project Management Plugins
|
||||
**Phase**: 1 (Complete)
|
||||
**Status**: ✅ Production Ready
|
||||
**Last Updated**: 2025-01-06
|
||||
|
||||
@@ -170,7 +170,7 @@ Test the MCP server with a real Gitea instance.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
1. **Gitea Instance**: Access to https://gitea.hotserv.cloud (or your Gitea instance)
|
||||
1. **Gitea Instance**: Access to https://gitea.example.com (or your Gitea instance)
|
||||
2. **API Token**: Personal access token with required permissions
|
||||
3. **Configuration**: Properly configured system and project configs
|
||||
|
||||
@@ -182,9 +182,9 @@ Create system-level configuration:
|
||||
mkdir -p ~/.config/claude
|
||||
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
chmod 600 ~/.config/claude/gitea.env
|
||||
@@ -205,7 +205,7 @@ echo ".env" >> .gitignore
|
||||
|
||||
### Step 2: Generate Gitea API Token
|
||||
|
||||
1. Log into Gitea: https://gitea.hotserv.cloud
|
||||
1. Log into Gitea: https://gitea.example.com
|
||||
2. Navigate to: **Settings** → **Applications** → **Manage Access Tokens**
|
||||
3. Click **Generate New Token**
|
||||
4. Token configuration:
|
||||
@@ -238,8 +238,8 @@ print(f'Mode: {result[\"mode\"]}')
|
||||
|
||||
Expected output:
|
||||
```
|
||||
API URL: https://gitea.hotserv.cloud/api/v1
|
||||
Owner: hhl-infra
|
||||
API URL: https://gitea.example.com/api/v1
|
||||
Owner: bandit
|
||||
Repo: test-repo (or None for company mode)
|
||||
Mode: project (or company)
|
||||
```
|
||||
@@ -375,9 +375,9 @@ print('\\n✅ PMO mode tests passed!')
|
||||
|
||||
**System-level** (`~/.config/claude/gitea.env`):
|
||||
```bash
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
```
|
||||
|
||||
**Project-level** (`.env` in project root):
|
||||
@@ -443,9 +443,9 @@ FileNotFoundError: System config not found: /home/user/.config/claude/gitea.env
|
||||
# Create system config
|
||||
mkdir -p ~/.config/claude
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
chmod 600 ~/.config/claude/gitea.env
|
||||
@@ -480,7 +480,7 @@ requests.exceptions.HTTPError: 401 Client Error: Unauthorized
|
||||
```bash
|
||||
# Test token manually
|
||||
curl -H "Authorization: token YOUR_TOKEN" \
|
||||
https://gitea.hotserv.cloud/api/v1/user
|
||||
https://gitea.example.com/api/v1/user
|
||||
|
||||
# If fails, regenerate token in Gitea settings
|
||||
```
|
||||
|
||||
@@ -294,4 +294,4 @@ logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
## License
|
||||
|
||||
Part of the claude-code-hhl-toolkit project.
|
||||
Part of the Bandit Labs Claude Code Plugins project (`support-claude-mktplace`).
|
||||
|
||||
@@ -131,7 +131,7 @@ For project-scoped operations, create `.env` in project root:
|
||||
# In your project directory
|
||||
cat > .env << 'EOF'
|
||||
# Wiki.js project path
|
||||
WIKIJS_PROJECT=projects/cuisineflow
|
||||
WIKIJS_PROJECT=projects/your-project-name
|
||||
EOF
|
||||
|
||||
# Add to .gitignore
|
||||
@@ -236,15 +236,14 @@ The MCP server is referenced in plugin `.mcp.json`:
|
||||
```
|
||||
/hyper-hive-labs/ # Base path
|
||||
├── projects/ # Project-specific
|
||||
│ ├── cuisineflow/
|
||||
│ ├── your-project/
|
||||
│ │ ├── lessons-learned/
|
||||
│ │ │ ├── sprints/
|
||||
│ │ │ ├── patterns/
|
||||
│ │ │ └── INDEX.md
|
||||
│ │ └── documentation/
|
||||
│ ├── cuisineflow-site/
|
||||
│ ├── intuit-engine/
|
||||
│ └── hhl-site/
|
||||
│ ├── another-project/
|
||||
│ └── shared-library/
|
||||
├── company/ # Company-wide
|
||||
│ ├── processes/
|
||||
│ ├── standards/
|
||||
@@ -409,6 +408,6 @@ MIT License - See repository root for details
|
||||
## Support
|
||||
|
||||
For issues and questions:
|
||||
- **Repository**: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit
|
||||
- **Issues**: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/issues
|
||||
- **Repository**: `ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace.git`
|
||||
- **Issues**: Contact repository maintainer
|
||||
- **Documentation**: `/docs/references/MCP-WIKIJS.md`
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"version": "0.1.0",
|
||||
"displayName": "Projman - Project Management for Claude Code",
|
||||
"description": "Sprint planning and project management with Gitea and Wiki.js integration. Provides AI-guided sprint planning, issue creation with label taxonomy, and lessons learned capture.",
|
||||
"author": "Hyper Hive Labs",
|
||||
"homepage": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit",
|
||||
"author": "Bandit Labs",
|
||||
"homepage": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit.git"
|
||||
"url": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -90,7 +90,7 @@ python -c "from mcp_server import server; print('Wiki.js MCP Server installed su
|
||||
|
||||
### 2.1 Generate Gitea API Token
|
||||
|
||||
1. Log into Gitea: https://gitea.hotserv.cloud
|
||||
1. Log into Gitea: https://gitea.example.com
|
||||
2. Navigate to: **User Icon** (top right) → **Settings**
|
||||
3. Click **Applications** tab
|
||||
4. Scroll to **Manage Access Tokens**
|
||||
@@ -145,9 +145,9 @@ mkdir -p ~/.config/claude
|
||||
```bash
|
||||
cat > ~/.config/claude/gitea.env << 'EOF'
|
||||
# Gitea API Configuration
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
# Secure the file (owner read/write only)
|
||||
@@ -159,7 +159,7 @@ chmod 600 ~/.config/claude/gitea.env
|
||||
**Configuration Variables:**
|
||||
- `GITEA_API_URL` - Gitea API endpoint (includes `/api/v1`)
|
||||
- `GITEA_API_TOKEN` - Personal access token from Step 2.1
|
||||
- `GITEA_OWNER` - Organization or user name (e.g., `hhl-infra`)
|
||||
- `GITEA_OWNER` - Organization or user name (e.g., `bandit`)
|
||||
|
||||
### 3.3 Configure Wiki.js
|
||||
|
||||
@@ -251,7 +251,7 @@ Test that everything is configured correctly:
|
||||
```bash
|
||||
# Test with curl
|
||||
curl -H "Authorization: token YOUR_GITEA_TOKEN" \
|
||||
https://gitea.hotserv.cloud/api/v1/user
|
||||
https://gitea.example.com/api/v1/user
|
||||
|
||||
# Should return your user information in JSON format
|
||||
```
|
||||
@@ -313,9 +313,9 @@ This will:
|
||||
|
||||
**`~/.config/claude/gitea.env`:**
|
||||
```bash
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxxx
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
```
|
||||
|
||||
**`~/.config/claude/wikijs.env`:**
|
||||
@@ -417,7 +417,7 @@ ls -la ~/.config/claude/wikijs.env
|
||||
```bash
|
||||
# Test Gitea token
|
||||
curl -H "Authorization: token YOUR_TOKEN" \
|
||||
https://gitea.hotserv.cloud/api/v1/user
|
||||
https://gitea.example.com/api/v1/user
|
||||
|
||||
# Test Wiki.js token
|
||||
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
||||
@@ -515,7 +515,7 @@ After configuration is complete:
|
||||
- Review MCP server documentation:
|
||||
- [Gitea MCP](../mcp-servers/gitea/README.md)
|
||||
- [Wiki.js MCP](../mcp-servers/wikijs/README.md)
|
||||
- Open issue: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/issues
|
||||
- Contact repository maintainer for support
|
||||
|
||||
**Questions:**
|
||||
- Read command documentation: `commands/*.md`
|
||||
|
||||
@@ -52,9 +52,9 @@ mkdir -p ~/.config/claude
|
||||
|
||||
# Gitea configuration
|
||||
cat > ~/.config/claude/gitea.env << EOF
|
||||
GITEA_API_URL=https://gitea.hotserv.cloud/api/v1
|
||||
GITEA_API_URL=https://gitea.example.com/api/v1
|
||||
GITEA_API_TOKEN=your_gitea_token_here
|
||||
GITEA_OWNER=hhl-infra
|
||||
GITEA_OWNER=bandit
|
||||
EOF
|
||||
|
||||
# Wiki.js configuration
|
||||
@@ -322,7 +322,7 @@ See [CONFIGURATION.md](./CONFIGURATION.md) for detailed configuration instructio
|
||||
|
||||
### Cannot connect to Gitea
|
||||
- Verify `~/.config/claude/gitea.env` exists and has correct URL and token
|
||||
- Test token: `curl -H "Authorization: token YOUR_TOKEN" https://gitea.hotserv.cloud/api/v1/user`
|
||||
- Test token: `curl -H "Authorization: token YOUR_TOKEN" https://gitea.example.com/api/v1/user`
|
||||
- Check network connectivity
|
||||
|
||||
### Cannot connect to Wiki.js
|
||||
@@ -410,8 +410,8 @@ projman/
|
||||
- [Wiki.js MCP Server](../mcp-servers/wikijs/README.md) - Wiki.js integration details
|
||||
|
||||
**Issues:**
|
||||
- Report bugs: https://gitea.hotserv.cloud/hhl-infra/claude-code-hhl-toolkit/issues
|
||||
- Feature requests: Same issue tracker
|
||||
- Report bugs: Contact repository maintainer
|
||||
- Feature requests: Contact repository maintainer
|
||||
- Documentation improvements: Submit PR
|
||||
|
||||
## License
|
||||
@@ -434,6 +434,6 @@ MIT License - See repository root for details
|
||||
|
||||
---
|
||||
|
||||
**Built for:** HyperHive Labs
|
||||
**Built for:** Bandit Labs
|
||||
**Status:** Phase 2 Complete - Commands ready for testing
|
||||
**Next:** Implement agent system (Phase 3)
|
||||
|
||||
@@ -105,7 +105,7 @@ The command updates `skills/label-taxonomy/labels-reference.md` with:
|
||||
# Label Taxonomy Reference
|
||||
|
||||
Last synced: 2025-01-18 14:30 UTC
|
||||
Source: Gitea (hhl-infra/cuisineflow)
|
||||
Source: Gitea (bandit/your-repo-name)
|
||||
|
||||
## Organization Labels (28)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ description: Dynamic reference for Gitea label taxonomy (organization + reposito
|
||||
|
||||
**Status:** ✅ Synced with Gitea
|
||||
**Last synced:** 2025-11-21 (via automated testing)
|
||||
**Source:** Gitea (hhl-infra/claude-code-hhl-toolkit)
|
||||
**Source:** Gitea (bandit/support-claude-mktplace)
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -17,7 +17,7 @@ This skill provides the current label taxonomy used for issue classification in
|
||||
|
||||
## Organization Labels (27)
|
||||
|
||||
Organization-level labels are shared across all repositories in the `hhl-infra` organization.
|
||||
Organization-level labels are shared across all repositories in the `bandit` organization.
|
||||
|
||||
### Agent (2)
|
||||
- `Agent/Human` (#0052cc) - Work performed by human developers
|
||||
@@ -62,7 +62,7 @@ Organization-level labels are shared across all repositories in the `hhl-infra`
|
||||
|
||||
## Repository Labels (16)
|
||||
|
||||
Repository-level labels are specific to the claude-code-hhl-toolkit project.
|
||||
Repository-level labels are specific to each project.
|
||||
|
||||
### Component (9)
|
||||
- `Component/Backend` (#5319e7) - Backend service code and business logic
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
"group": "Core"
|
||||
},
|
||||
{
|
||||
"filePath": "claude-code-hhl-toolkit.code-workspace",
|
||||
"filePath": "support-claude-mktplace.code-workspace",
|
||||
"group": "Core"
|
||||
},
|
||||
{
|
||||
Reference in New Issue
Block a user