From 38bb57723fc2be3132676b6bc4e87926b93d54e4 Mon Sep 17 00:00:00 2001
From: emredursun
-
@@ -43,7 +43,7 @@
| Cross-IDE support | Single IDE | Single IDE | 5 IDEs from one source of truth |
| Plugin marketplace | None | None | Trust-verified skill marketplace |
| Telegram control | None | None | Full IDE control from your phone |
-| Test suite | None | None | 1015 tests with security validation |
+| Test suite | None | None | 1018 tests with security validation |
| Runtime dependencies | Varies | Varies | **Zero** |
## Quick Start
@@ -117,7 +117,9 @@ Onboarding (`/greenfield` or `/brownfield`) is a one-time pre-SDLC phase. Each s
See the full **[CHANGELOG](CHANGELOG.md)** for detailed release notes.
-**Latest (v5.2.6):** Fixed Claude Code CLI slash command discovery — blanket `.claude/` gitignore narrowed to `.claude/commands/` for proper directory discovery. New `narrowBlanketClaudeIgnore()` migration function. CRLF-safe regex patterns. `path.isAbsolute()` guards on all gitignore functions. 1015 tests passing.
+**Latest (v5.2.7):** `kit update` now runs the full gitignore pipeline — projects upgraded from older Kit versions get missing `.cursor/commands/`, `.opencode/commands/`, and other bridge entries auto-fixed. 1018 tests passing.
+
+**v5.2.6:** Fixed Claude Code CLI slash command discovery — blanket `.claude/` gitignore narrowed to `.claude/commands/` for proper directory discovery. New `narrowBlanketClaudeIgnore()` migration function. CRLF-safe regex patterns.
**v5.2.5:** Complete gitignore coverage — `kit init` now gitignores all generated artifacts (bridge dirs, IDE configs, `.worktreeinclude`) so `git status` stays clean.
@@ -231,7 +233,7 @@ kit/
├── create-kit-app/ # Project scaffolder
├── docs/ # MkDocs documentation site
├── examples/ # Starter examples (minimal, full-stack)
-└── tests/ # 1015 tests (unit, structural, integration, security)
+└── tests/ # 1018 tests (unit, structural, integration, security)
```
## Security
diff --git a/docs/architecture.md b/docs/architecture.md
index d96f76b..dd01390 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -8,7 +8,7 @@ Devran AI Kit v5.2.7 is an engineered framework with a **43-module runtime engin
```
┌─────────────────────────────────────────────────────────────────────┐
-│ DEVRAN AI KIT v5.2.5 │
+│ DEVRAN AI KIT v5.2.7 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
@@ -43,7 +43,7 @@ Devran AI Kit v5.2.7 is an engineered framework with a **43-module runtime engin
│ │ RUNTIME ENGINE (43 modules) │ │
│ │ workflow-engine • session-manager • task-governance │ │
│ │ agent-reputation • self-healing • marketplace │ │
-│ │ plugin-system • identity • conflict-detector • + 12 │ │
+│ │ plugin-system • identity • command-bridge • worktree │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
@@ -96,10 +96,12 @@ Node.js runtime modules that enforce governance, manage state, and provide platf
| Phase | Modules |
|:---|:---|
-| **Phase 1 — Foundation** | `workflow-engine`, `session-manager`, `verify`, `updater`, `error-budget` |
-| **Phase 2 — Runtime** | `workflow-persistence`, `agent-registry`, `loading-engine`, `hook-system`, `task-model` |
-| **Phase 3 — Collaboration** | `identity`, `task-governance`, `skill-sandbox`, `conflict-detector`, `security-scanner`, `plugin-system` |
-| **Phase 4 — Platform** | `agent-reputation`, `engineering-manager`, `self-healing`, `marketplace`, `cli-commands` |
+| **Phase 1 — Foundation** | `workflow-engine`, `session-manager`, `verify`, `updater`, `error-budget`, `io`, `constants`, `logger` |
+| **Phase 2 — Runtime** | `workflow-persistence`, `workflow-events`, `agent-registry`, `loading-engine`, `hook-system`, `task-model`, `learning-engine` |
+| **Phase 3 — Collaboration** | `identity`, `task-governance`, `skill-sandbox`, `conflict-detector`, `security-scanner`, `plugin-system`, `plugin-verifier` |
+| **Phase 4 — Platform** | `agent-reputation`, `engineering-manager`, `self-healing`, `marketplace`, `cli-commands`, `commands/init` |
+| **Phase 5 — IDE & Bridge** | `command-bridge`, `ide-generator`, `project-ide-generator`, `worktree`, `config-validator`, `doc-discovery`, `doc-generator` |
+| **Phase 6 — Integrations** | `telegram-sync`, `telegram-menu-guard`, `market-research`, `circuit-breaker`, `rate-limiter`, `quality-score`, `decision-validator`, `onboarding-engine` |
### Rules & Hooks
@@ -129,9 +131,13 @@ lib/ # Runtime Engine (43 modules)
├── agent-reputation.js # Score tracking & rankings
├── self-healing.js # CI failure detection & patch generation
├── marketplace.js # Community skill marketplace
-└── + 17 more modules # Identity, plugins, hooks, registry...
+├── command-bridge.js # Cross-IDE slash command bridge generation
+├── worktree.js # Git worktree support (.worktreeinclude, post-checkout)
+├── io.js # Gitignore management (narrow, cleanup, addToGitignore)
+├── telegram-sync.js # Telegram bot menu synchronization
+└── + 14 more modules # Identity, plugins, hooks, registry...
-tests/ # 1015 tests (53 files)
+tests/ # 1018 tests (53 files)
├── unit/ # Module tests
├── structural/ # Inventory + schema validation
├── integration/ # Cross-module tests
+
diff --git a/docs/architecture.md b/docs/architecture.md
index 9b6d86b..d96f76b 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -1,6 +1,6 @@
# Architecture
-Devran AI Kit v5.2.6 is an engineered framework with a **43-module runtime engine**, 26 agents, 39 skills, 40 commands, 25 workflows, and 15 governance rules.
+Devran AI Kit v5.2.7 is an engineered framework with a **43-module runtime engine**, 26 agents, 39 skills, 40 commands, 25 workflows, and 15 governance rules.
---
diff --git a/lib/updater.js b/lib/updater.js
index db44bd4..57cf0db 100644
--- a/lib/updater.js
+++ b/lib/updater.js
@@ -268,7 +268,16 @@ function applyUpdate(sourceRoot, targetRoot, dryRun = false) {
report.warnings.push(`Legacy gitignore cleanup failed: ${err.message}`);
}
- // Step 3: Regenerate worktree support files
+ // Step 3: Add any missing gitignore entries (bridges, configs, worktreeinclude)
+ try {
+ const { addToGitignore } = require('./io');
+ addToGitignore(targetRoot, detectedIDEs);
+ } catch (err) {
+ report.warnings = report.warnings || [];
+ report.warnings.push(`Gitignore entry addition failed: ${err.message}`);
+ }
+
+ // Step 4: Regenerate worktree support files
try {
const { generateWorktreeInclude, installPostCheckoutHook } = require('./worktree');
generateWorktreeInclude(targetRoot, detectedIDEs);
diff --git a/package-lock.json b/package-lock.json
index b8b5b14..da20fcc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@devran-ai/kit",
- "version": "5.2.6",
+ "version": "5.2.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@devran-ai/kit",
- "version": "5.2.6",
+ "version": "5.2.7",
"hasInstallScript": true,
"license": "MIT",
"bin": {
diff --git a/package.json b/package.json
index 489d28e..46ee426 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@devran-ai/kit",
- "version": "5.2.6",
+ "version": "5.2.7",
"description": "Trust-grade AI development framework — zero-dependency runtime engine for agent orchestration, workflow governance, and skill management.",
"main": "bin/kit.js",
"bin": {
diff --git a/tests/unit/updater.test.js b/tests/unit/updater.test.js
index 6a70f48..cb69493 100644
--- a/tests/unit/updater.test.js
+++ b/tests/unit/updater.test.js
@@ -149,3 +149,53 @@ describe('CLI Updater — Non-Destructive Merge', () => {
expect(report.added.length).toBeGreaterThan(0);
});
});
+
+describe('CLI Updater — Gitignore Pipeline', () => {
+ beforeEach(() => { setupTestDirs(); });
+ afterEach(() => { teardownTestDirs(); });
+
+ it('should add missing .cursor/commands/ to gitignore during update', async () => {
+ // Simulate a project that has .gitignore with only .claude/ blanket ignore
+ const gitignorePath = path.join(TMP_TARGET, '.gitignore');
+ fs.writeFileSync(gitignorePath, 'node_modules/\n.claude/\n', 'utf-8');
+
+ const updater = await loadUpdater();
+ updater.applyUpdate(TMP_SOURCE, TMP_TARGET);
+
+ const content = fs.readFileSync(gitignorePath, 'utf-8');
+ // narrowBlanketClaudeIgnore should have narrowed .claude/ to .claude/commands/
+ expect(content).toContain('.claude/commands/');
+ // addToGitignore should have added .cursor/commands/ if cursor detected
+ expect(content).toContain('.agent/');
+ });
+
+ it('should narrow blanket .claude/ to .claude/commands/ during update', async () => {
+ const gitignorePath = path.join(TMP_TARGET, '.gitignore');
+ fs.writeFileSync(gitignorePath, 'node_modules/\n.claude/\n.agent/\n', 'utf-8');
+
+ const updater = await loadUpdater();
+ updater.applyUpdate(TMP_SOURCE, TMP_TARGET);
+
+ const content = fs.readFileSync(gitignorePath, 'utf-8');
+ // Should have narrowed blanket .claude/ to .claude/commands/
+ expect(content).toContain('.claude/commands/');
+ // Should not have the blanket pattern anymore
+ const lines = content.split('\n').map(l => l.trim());
+ expect(lines).not.toContain('.claude/');
+ });
+
+ it('should add gitignore entries even when no .gitignore exists', async () => {
+ const gitignorePath = path.join(TMP_TARGET, '.gitignore');
+ // Ensure no .gitignore exists
+ if (fs.existsSync(gitignorePath)) fs.unlinkSync(gitignorePath);
+
+ const updater = await loadUpdater();
+ updater.applyUpdate(TMP_SOURCE, TMP_TARGET);
+
+ // addToGitignore creates .gitignore if missing
+ expect(fs.existsSync(gitignorePath)).toBe(true);
+ const content = fs.readFileSync(gitignorePath, 'utf-8');
+ expect(content).toContain('.agent/');
+ expect(content).toContain('.claude/commands/');
+ });
+});
From 30471ca87d2a9580af7d6ad5d563ccdab6d2a487 Mon Sep 17 00:00:00 2001
From: emredursun