mirror of
https://github.com/Egonex-AI/Understand-Anything.git
synced 2026-06-22 10:58:03 +08:00
fix(install): address PR #364 review feedback for Kiro support
Addresses the maintainer (@Lum1104) change requests and the Codex review on PR #364. install.sh - Build the Kiro agent's "resources" list dynamically by iterating over understand-anything-plugin/agents/*.md instead of hard-coding each path (review: "do not hard code the agents, instead use loop of the repo dir"). Deterministic order via LC_ALL=C sort; pure bash, no jq dependency. This also fixes pre-existing drift: the hard-coded list had 7 entries and was missing article-analyzer.md and knowledge-graph-guide.md, while 9 agent files actually exist. - Drop the unsupported "Kiro IDE auto-discovers .kiro-plugin/plugin.json" install tip; keep the usage hint. install.ps1 (Windows) - Add the `kiro` platform entry (~/.kiro/skills, per-skill) so `install.ps1 kiro` no longer fails with "Unknown platform: kiro". - Generate ~/.kiro/agents/understand.json in Cmd-Install using the same dynamic agent discovery; emit forward-slashed file:// URIs and write UTF-8 without a BOM via [System.IO.File]::WriteAllText. - Remove the agent JSON in Cmd-Uninstall. README.md - Point the Kiro install command at the canonical Egonex-AI repo instead of Lum1104 (Codex P2: a lagging fork would error "Unknown platform: kiro" before cloning the canonical repo). - Replace the unverified ".kiro-plugin auto-discovery" claim with the actual behavior (skills symlinked into ~/.kiro/skills, agent written to ~/.kiro/agents/understand.json). Remove .kiro-plugin/plugin.json - Kiro's documented discovery locations are ~/.kiro/agents, .kiro/skills and .kiro/prompts only; .kiro-plugin/plugin.json is never read, so the file and the claims that referenced it are removed (maintainer: "use install.sh only is fine"). Verification - install.sh: `bash -n` clean; executed the real agent-JSON generation block -> valid JSON with 9 resources; `kiro-cli agent validate` exit 0. - install.ps1: parsed with 0 syntax errors (PowerShell 7.6.2 AST parser); ConvertTo-FileUri yields file:///C:/... for Windows paths; the real Cmd-Install "kiro" path runs without error and produces JSON that passes `kiro-cli agent validate` (exit 0).
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"name": "understand-anything",
|
||||
"description": "AI-powered codebase understanding — analyze, visualize, and explain any project",
|
||||
"version": "2.7.5",
|
||||
"author": { "name": "Lum1104" },
|
||||
"homepage": "https://github.com/Lum1104/Understand-Anything",
|
||||
"repository": "https://github.com/Lum1104/Understand-Anything",
|
||||
"license": "MIT",
|
||||
"keywords": ["codebase-analysis", "knowledge-graph", "architecture", "onboarding", "dashboard"],
|
||||
"skills": "./understand-anything-plugin/skills/",
|
||||
"agents": "./understand-anything-plugin/agents/"
|
||||
}
|
||||
@@ -236,12 +236,12 @@ copilot plugin install Egonex-AI/Understand-Anything:understand-anything-plugin
|
||||
### Kiro CLI / IDE
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash -s kiro
|
||||
curl -fsSL https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.sh | bash -s kiro
|
||||
```
|
||||
|
||||
After installation:
|
||||
- **Kiro CLI**: `kiro-cli chat --agent understand "Analyze this project"`
|
||||
- **Kiro IDE**: Open the cloned repo — auto-discovered via `.kiro-plugin/plugin.json`
|
||||
- **Kiro IDE**: The skills are symlinked into `~/.kiro/skills/` and the `understand` agent is written to `~/.kiro/agents/understand.json`, so both are available after restarting the IDE.
|
||||
|
||||
For personal skills (available across all projects), run the `install.sh` above with the `kiro` platform.
|
||||
|
||||
|
||||
+42
@@ -40,6 +40,7 @@ $Platforms = [ordered]@{
|
||||
kimi = @{ Target = (Join-Path $HOME '.kimi\skills'); Style = 'folder' }
|
||||
trae = @{ Target = (Join-Path $HOME '.trae\skills'); Style = 'per-skill' }
|
||||
nanobot = @{ Target = (Join-Path $HOME '.nanobot\workspace\skills'); Style = 'per-skill' }
|
||||
kiro = @{ Target = (Join-Path $HOME '.kiro\skills'); Style = 'per-skill' }
|
||||
}
|
||||
|
||||
function Show-Usage {
|
||||
@@ -192,6 +193,11 @@ function Link-Plugin-Root {
|
||||
}
|
||||
}
|
||||
|
||||
function ConvertTo-FileUri([string]$Path) {
|
||||
# Produce a forward-slashed file URI (Windows: file:///C:/path/...).
|
||||
return 'file:///' + ($Path -replace '\\', '/')
|
||||
}
|
||||
|
||||
function Cmd-Install([string]$Id) {
|
||||
$cfg = Resolve-Platform $Id
|
||||
Clone-Or-Update
|
||||
@@ -200,18 +206,54 @@ function Cmd-Install([string]$Id) {
|
||||
Write-Host '→ Linking universal plugin root'
|
||||
Link-Plugin-Root
|
||||
|
||||
if ($Id -eq 'kiro') {
|
||||
Write-Host '→ Creating Kiro agent configuration'
|
||||
$agentsDir = Join-Path $HOME '.kiro\agents'
|
||||
if (-not (Test-Path $agentsDir)) { New-Item -ItemType Directory -Path $agentsDir | Out-Null }
|
||||
$pluginRoot = Join-Path $RepoDir 'understand-anything-plugin'
|
||||
|
||||
# Build the "resources" list dynamically from the agent definitions in
|
||||
# the repo so it never drifts as agents are added or removed.
|
||||
$resources = @(
|
||||
Get-ChildItem -Path (Join-Path $pluginRoot 'agents') -Filter '*.md' -File |
|
||||
Sort-Object Name |
|
||||
ForEach-Object { ConvertTo-FileUri $_.FullName }
|
||||
)
|
||||
$agent = [ordered]@{
|
||||
name = 'understand'
|
||||
description = 'Analyze codebase into interactive knowledge graph — Understand Anything'
|
||||
prompt = ConvertTo-FileUri (Join-Path $pluginRoot 'skills\understand\SKILL.md')
|
||||
tools = @('read', 'write', 'shell', 'grep', 'glob', 'code', 'subagent')
|
||||
resources = $resources
|
||||
}
|
||||
$agentJson = Join-Path $agentsDir 'understand.json'
|
||||
# WriteAllText emits UTF-8 without a BOM on every PowerShell version.
|
||||
[System.IO.File]::WriteAllText($agentJson, ($agent | ConvertTo-Json -Depth 5))
|
||||
Write-Host " ✓ $agentJson"
|
||||
}
|
||||
|
||||
Write-Host "`n✓ Installed Understand-Anything for $Id"
|
||||
Write-Host ' Restart your CLI or IDE to pick up the skills.'
|
||||
if ($Id -eq 'vscode') {
|
||||
Write-Host "`n Tip: VS Code can also auto-discover the plugin by opening this repo"
|
||||
Write-Host ' directly (it reads .copilot-plugin/plugin.json), no symlinks needed.'
|
||||
}
|
||||
if ($Id -eq 'kiro') {
|
||||
Write-Host "`n Usage: kiro-cli chat --agent understand `"Analyze this project`""
|
||||
}
|
||||
}
|
||||
|
||||
function Cmd-Uninstall([string]$Id) {
|
||||
$cfg = Resolve-Platform $Id
|
||||
Write-Host "→ Removing skill links for $Id"
|
||||
Unlink-Skills $cfg.Target $cfg.Style
|
||||
if ($Id -eq 'kiro') {
|
||||
$agentJson = Join-Path $HOME '.kiro\agents\understand.json'
|
||||
if (Test-Path $agentJson) {
|
||||
Remove-Item -LiteralPath $agentJson -Force
|
||||
Write-Host " ✓ removed $agentJson"
|
||||
}
|
||||
}
|
||||
if (Remove-Reparse $PluginLink) {
|
||||
Write-Host " ✓ removed $PluginLink"
|
||||
}
|
||||
|
||||
+13
-10
@@ -195,6 +195,17 @@ cmd_install() {
|
||||
printf -- '→ Creating Kiro agent configuration\n'
|
||||
mkdir -p "$HOME/.kiro/agents"
|
||||
local plugin_root="$REPO_DIR/understand-anything-plugin"
|
||||
|
||||
# Build the "resources" list dynamically from the agent definitions in the
|
||||
# repo so it never drifts as agents are added or removed. Deterministic
|
||||
# order via LC_ALL=C sort; no external deps (no jq) so it runs anywhere.
|
||||
local resources="" agent_md
|
||||
while IFS= read -r agent_md; do
|
||||
[[ -n "$agent_md" ]] || continue
|
||||
[[ -n "$resources" ]] && resources+=$',\n'
|
||||
resources+=" \"file://$agent_md\""
|
||||
done < <(find "$plugin_root/agents" -maxdepth 1 -type f -name '*.md' | LC_ALL=C sort)
|
||||
|
||||
cat > "$HOME/.kiro/agents/understand.json" <<KIROEOF
|
||||
{
|
||||
"name": "understand",
|
||||
@@ -202,13 +213,7 @@ cmd_install() {
|
||||
"prompt": "file://$plugin_root/skills/understand/SKILL.md",
|
||||
"tools": ["read", "write", "shell", "grep", "glob", "code", "subagent"],
|
||||
"resources": [
|
||||
"file://$plugin_root/agents/project-scanner.md",
|
||||
"file://$plugin_root/agents/file-analyzer.md",
|
||||
"file://$plugin_root/agents/architecture-analyzer.md",
|
||||
"file://$plugin_root/agents/tour-builder.md",
|
||||
"file://$plugin_root/agents/graph-reviewer.md",
|
||||
"file://$plugin_root/agents/assemble-reviewer.md",
|
||||
"file://$plugin_root/agents/domain-analyzer.md"
|
||||
$resources
|
||||
]
|
||||
}
|
||||
KIROEOF
|
||||
@@ -222,9 +227,7 @@ KIROEOF
|
||||
printf ' directly (it reads .copilot-plugin/plugin.json), no symlinks needed.\n'
|
||||
fi
|
||||
if [[ "$id" == "kiro" ]]; then
|
||||
printf '\n Tip: Kiro IDE can also auto-discover the plugin by opening this repo\n'
|
||||
printf ' directly (it reads .kiro-plugin/plugin.json), no symlinks needed.\n'
|
||||
printf ' Usage: kiro-cli chat --agent understand "Analyze this project"\n'
|
||||
printf '\n Usage: kiro-cli chat --agent understand "Analyze this project"\n'
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user