Skip to content

Commit fa89a13

Browse files
committed
Merge upstream/main (v0.3.2) - preserve tikalk customizations
Upstream changes merged: - feat: migrate Codex/agy init to native skills workflow (github#1906) - feat(presets): add enable/disable toggle and update semantics (github#1891) - feat: add iFlow CLI support (github#1875) - feat(commands): wire before/after hook events into specify and plan templates (github#1886) - Add conduct extension to community catalog (github#1908) - feat(extensions): add verify-tasks extension to community catalog (github#1871) Tikalk customizations preserved: - Orange theme (ACCENT_COLOR = #f47721) - Pre-Installed Extensions panel in init output - --team-ai-directives CLI parameter - /spec.* command aliases (instead of /speckit.*) - Skills package manager (specify skill subcommand) - Bundled extensions/presets installation - install_bundled_extensions, install_bundled_presets, get_preinstalled_extensions functions Version: 0.1.15
2 parents 61d60e8 + c8af730 commit fa89a13

26 files changed

Lines changed: 1957 additions & 1125 deletions

.github/workflows/release-trigger.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ jobs:
112112
echo ""
113113
echo "## [${{ steps.version.outputs.version }}] - $DATE"
114114
echo ""
115-
echo "### Changed"
115+
echo "### Changes"
116116
echo ""
117117
echo "$COMMITS"
118118
echo ""

.github/workflows/scripts/create-github-release.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ gh release create "$VERSION" \
6262
.genreleases/agentic-sdlc-spec-kit-template-trae-ps-"$VERSION".zip \
6363
.genreleases/agentic-sdlc-spec-kit-template-pi-sh-"$VERSION".zip \
6464
.genreleases/agentic-sdlc-spec-kit-template-pi-ps-"$VERSION".zip \
65+
.genreleases/agentic-sdlc-spec-kit-template-iflow-sh-"$VERSION".zip \
66+
.genreleases/agentic-sdlc-spec-kit-template-iflow-ps-"$VERSION".zip \
6567
.genreleases/agentic-sdlc-spec-kit-template-generic-sh-"$VERSION".zip \
6668
.genreleases/agentic-sdlc-spec-kit-template-generic-ps-"$VERSION".zip \
6769
--title "Agentic SDLC Spec Kit Templates - $VERSION_NO_V" \

.github/workflows/scripts/create-release-packages.ps1

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
1515
.PARAMETER Agents
1616
Comma or space separated subset of agents to build (default: all)
17-
Valid agents: claude, gemini, copilot, cursor-agent, qwen, opencode, windsurf, codex, kilocode, auggie, roo, codebuddy, amp, kiro-cli, bob, qodercli, shai, tabnine, agy, vibe, kimi, trae, pi, generic
17+
Valid agents: claude, gemini, copilot, cursor-agent, qwen, opencode, windsurf, codex, kilocode, auggie, roo, codebuddy, amp, kiro-cli, bob, qodercli, shai, tabnine, agy, vibe, kimi, trae, pi, iflow, generic
1818
1919
.PARAMETER Scripts
2020
Comma or space separated subset of script types to build (default: both)
@@ -204,20 +204,22 @@ agent: $basename
204204
}
205205
}
206206

207-
# Create Kimi Code skills in .kimi/skills/<name>/SKILL.md format.
208-
# Kimi CLI discovers skills as directories containing a SKILL.md file,
209-
# invoked with /skill:<name> (e.g. /skill:speckit.specify).
210-
function New-KimiSkills {
207+
# Create skills in <skills_dir>\<name>\SKILL.md format.
208+
# Most agents use hyphenated names (e.g. speckit-plan); Kimi is the
209+
# current dotted-name exception (e.g. speckit.plan).
210+
function New-Skills {
211211
param(
212212
[string]$SkillsDir,
213-
[string]$ScriptVariant
213+
[string]$ScriptVariant,
214+
[string]$AgentName,
215+
[string]$Separator = '-'
214216
)
215217

216218
$templates = Get-ChildItem -Path "templates/commands/*.md" -File -ErrorAction SilentlyContinue
217219

218220
foreach ($template in $templates) {
219221
$name = [System.IO.Path]::GetFileNameWithoutExtension($template.Name)
220-
$skillName = "speckit.$name"
222+
$skillName = "speckit${Separator}$name"
221223
$skillDir = Join-Path $SkillsDir $skillName
222224
New-Item -ItemType Directory -Force -Path $skillDir | Out-Null
223225

@@ -270,7 +272,7 @@ function New-KimiSkills {
270272

271273
$body = $outputLines -join "`n"
272274
$body = $body -replace '\{ARGS\}', '$ARGUMENTS'
273-
$body = $body -replace '__AGENT__', 'kimi'
275+
$body = $body -replace '__AGENT__', $AgentName
274276
$body = Rewrite-Paths -Content $body
275277

276278
# Strip existing frontmatter, keep only body
@@ -399,8 +401,9 @@ function Build-Variant {
399401
Generate-Commands -Agent 'windsurf' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
400402
}
401403
'codex' {
402-
$cmdDir = Join-Path $baseDir ".codex/prompts"
403-
Generate-Commands -Agent 'codex' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
404+
$skillsDir = Join-Path $baseDir ".agents/skills"
405+
New-Item -ItemType Directory -Force -Path $skillsDir | Out-Null
406+
New-Skills -SkillsDir $skillsDir -ScriptVariant $Script -AgentName 'codex' -Separator '-'
404407
}
405408
'kilocode' {
406409
$cmdDir = Join-Path $baseDir ".kilocode/workflows"
@@ -455,7 +458,7 @@ function Build-Variant {
455458
'kimi' {
456459
$skillsDir = Join-Path $baseDir ".kimi/skills"
457460
New-Item -ItemType Directory -Force -Path $skillsDir | Out-Null
458-
New-KimiSkills -SkillsDir $skillsDir -ScriptVariant $Script
461+
New-Skills -SkillsDir $skillsDir -ScriptVariant $Script -AgentName 'kimi' -Separator '.'
459462
}
460463
'trae' {
461464
$rulesDir = Join-Path $baseDir ".trae/rules"
@@ -466,6 +469,10 @@ function Build-Variant {
466469
$cmdDir = Join-Path $baseDir ".pi/prompts"
467470
Generate-Commands -Agent 'pi' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
468471
}
472+
'iflow' {
473+
$cmdDir = Join-Path $baseDir ".iflow/commands"
474+
Generate-Commands -Agent 'iflow' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
475+
}
469476
'generic' {
470477
$cmdDir = Join-Path $baseDir ".speckit/commands"
471478
Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
@@ -482,7 +489,7 @@ function Build-Variant {
482489
}
483490

484491
# Define all agents and scripts
485-
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'trae', 'pi', 'generic')
492+
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'kiro-cli', 'bob', 'qodercli', 'shai', 'tabnine', 'agy', 'vibe', 'kimi', 'trae', 'pi', 'iflow', 'generic')
486493
$AllScripts = @('sh', 'ps')
487494

488495
function Normalize-List {

.github/workflows/scripts/create-release-packages.sh

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set -euo pipefail
66
# Usage: .github/workflows/scripts/create-release-packages.sh <version>
77
# Version argument should include leading 'v'.
88
# Optionally set AGENTS and/or SCRIPTS env vars to limit what gets built.
9-
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi generic (default: all)
9+
# AGENTS : space or comma separated subset of: claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi iflow generic (default: all)
1010
# SCRIPTS : space or comma separated subset of: sh ps (default: both)
1111
# Examples:
1212
# AGENTS=claude SCRIPTS=sh $0 v0.2.0
@@ -123,18 +123,20 @@ EOF
123123
done
124124
}
125125

126-
# Create Kimi Code skills in .kimi/skills/<name>/SKILL.md format.
127-
# Kimi CLI discovers skills as directories containing a SKILL.md file,
128-
# invoked with /skill:<name> (e.g. /skill:speckit.specify).
129-
create_kimi_skills() {
126+
# Create skills in <skills_dir>/<name>/SKILL.md format.
127+
# Most agents use hyphenated names (e.g. speckit-plan); Kimi is the
128+
# current dotted-name exception (e.g. speckit.plan).
129+
create_skills() {
130130
local skills_dir="$1"
131131
local script_variant="$2"
132+
local agent_name="$3"
133+
local separator="${4:-"-"}"
132134

133135
for template in templates/commands/*.md; do
134136
[[ -f "$template" ]] || continue
135137
local name
136138
name=$(basename "$template" .md)
137-
local skill_name="speckit.${name}"
139+
local skill_name="speckit${separator}${name}"
138140
local skill_dir="${skills_dir}/${skill_name}"
139141
mkdir -p "$skill_dir"
140142

@@ -177,9 +179,9 @@ create_kimi_skills() {
177179
in_frontmatter && skip_scripts && /^[[:space:]]/ { next }
178180
{ print }
179181
')
180-
body=$(printf '%s\n' "$body" | sed 's/{ARGS}/\$ARGUMENTS/g' | sed 's/__AGENT__/kimi/g' | rewrite_paths)
182+
body=$(printf '%s\n' "$body" | sed 's/{ARGS}/\$ARGUMENTS/g' | sed "s/__AGENT__/$agent_name/g" | rewrite_paths)
181183

182-
# Strip existing frontmatter and prepend Kimi frontmatter
184+
# Strip existing frontmatter and prepend skills frontmatter.
183185
local template_body
184186
template_body=$(printf '%s\n' "$body" | awk '/^---/{p++; if(p==2){found=1; next}} found')
185187

@@ -251,8 +253,8 @@ build_variant() {
251253
mkdir -p "$base_dir/.windsurf/workflows"
252254
generate_commands windsurf md "\$ARGUMENTS" "$base_dir/.windsurf/workflows" "$script" ;;
253255
codex)
254-
mkdir -p "$base_dir/.codex/prompts"
255-
generate_commands codex md "\$ARGUMENTS" "$base_dir/.codex/prompts" "$script" ;;
256+
mkdir -p "$base_dir/.agents/skills"
257+
create_skills "$base_dir/.agents/skills" "$script" "codex" "-" ;;
256258
kilocode)
257259
mkdir -p "$base_dir/.kilocode/workflows"
258260
generate_commands kilocode md "\$ARGUMENTS" "$base_dir/.kilocode/workflows" "$script" ;;
@@ -292,13 +294,16 @@ build_variant() {
292294
generate_commands vibe md "\$ARGUMENTS" "$base_dir/.vibe/prompts" "$script" ;;
293295
kimi)
294296
mkdir -p "$base_dir/.kimi/skills"
295-
create_kimi_skills "$base_dir/.kimi/skills" "$script" ;;
297+
create_skills "$base_dir/.kimi/skills" "$script" "kimi" "." ;;
296298
trae)
297299
mkdir -p "$base_dir/.trae/rules"
298300
generate_commands trae md "\$ARGUMENTS" "$base_dir/.trae/rules" "$script" ;;
299301
pi)
300302
mkdir -p "$base_dir/.pi/prompts"
301303
generate_commands pi md "\$ARGUMENTS" "$base_dir/.pi/prompts" "$script" ;;
304+
iflow)
305+
mkdir -p "$base_dir/.iflow/commands"
306+
generate_commands iflow md "\$ARGUMENTS" "$base_dir/.iflow/commands" "$script" ;;
302307
generic)
303308
mkdir -p "$base_dir/.speckit/commands"
304309
generate_commands generic md "\$ARGUMENTS" "$base_dir/.speckit/commands" "$script" ;;
@@ -308,7 +313,7 @@ build_variant() {
308313
}
309314

310315
# Determine agent list
311-
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi generic)
316+
ALL_AGENTS=(claude gemini copilot cursor-agent qwen opencode windsurf codex kilocode auggie roo codebuddy amp shai tabnine kiro-cli agy bob vibe qodercli kimi trae pi iflow generic)
312317
ALL_SCRIPTS=(sh ps)
313318

314319
norm_list() {

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Specify supports multiple AI agents by generating agent-specific command files a
5858
| **Tabnine CLI** | `.tabnine/agent/commands/` | TOML | `tabnine` | Tabnine CLI |
5959
| **Kimi Code** | `.kimi/skills/` | Markdown | `kimi` | Kimi Code CLI (Moonshot AI) |
6060
| **Pi Coding Agent** | `.pi/prompts/` | Markdown | `pi` | Pi terminal coding agent |
61+
| **iFlow CLI** | `.iflow/commands/` | Markdown | `iflow` | iFlow CLI (iflow-ai) |
6162
| **IBM Bob** | `.bob/commands/` | Markdown | N/A (IDE-based) | IBM Bob IDE |
6263
| **Trae** | `.trae/rules/` | Markdown | N/A (IDE-based) | Trae IDE |
6364
| **Generic** | User-specified via `--ai-commands-dir` | Markdown | N/A | Bring your own agent |

0 commit comments

Comments
 (0)