Skip to content

Conversation

@TechNickAI
Copy link
Owner

@TechNickAI TechNickAI commented Dec 17, 2025

Summary

Consolidate all distributable content into plugins/ as the single source of truth. This enables elegant updates via Claude Code's plugin marketplace while maintaining Cursor/Windsurf compatibility through symlinks.

⚠️ Breaking Changes

This is a significant architectural change that affects existing users:

  • Plugin names changed: dev-agents + code-review → consolidated into agents
  • Plugin paths changed: Agents/commands/skills moved from multiple locations to plugins/
  • Removed plugins: Empty placeholders (python, react, django, code-standards, git-commits) deleted

Migration Path for Existing Users

When you run /ai-coding-config update after this change:

  1. The system will detect deprecated plugins (code-review, dev-agents, git-commits)
  2. You'll be offered automatic migration with uninstall/install commands
  3. Symlinks will continue working (chain resolution through the repo's new symlinks)
  4. For details, see the <plugin-migration-check> section in /ai-coding-config

What you get: MORE agents (13 total) in a cleaner structure with easier updates.

Key Changes

New Plugin Structure

  • plugins/core/ - All commands and context (canonical source)
  • plugins/agents/ - Consolidated from dev-agents + code-review (13 agents total)
  • plugins/skills/ - All autonomous skills
  • plugins/personalities/ - Simplified (one file per personality, no duplication)

Symlinks for Backward Compatibility

  • .claude/commands/plugins/core/commands/
  • .claude/agents/plugins/agents/agents/
  • .claude/skills/plugins/skills/skills/
  • Personality files copied to rules/personalities/ (not symlinked - needs frontmatter editing)

Updated /ai-coding-config Command

  • Detects tools: Cursor, Windsurf, Claude Code, Aider
  • Uses AskUserQuestion for tool selection
  • Plugin-first flow for Claude Code users
  • Symlink setup for Cursor/Windsurf users
  • NEW: Migration check for deprecated plugins from pre-1.2.0

Removed

  • Empty placeholder plugins (python, react, django, code-standards, git-commits)
  • Duplicated personality-change.md from each personality plugin
  • Fixed broken personality-marianne-williamson → now personality-luminous

Bugs Fixed

  • /personality-change no longer edits symlinked files (copies personalities locally instead)
  • Personality list updated to use correct plugin name (luminous, not marianne-williamson)

Why This Matters

Before: Two install paths (plugin marketplace vs /ai-coding-config), agent confusion (split across locations), personality duplication.

After: One source of truth (plugins/), clean update path via marketplace, symlinks for tool compatibility.

Test Plan

  • Verify symlinks work: ls -la .claude/ shows symlinks to plugins/
  • Verify personality files copied (not symlinked): /personality-change can edit frontmatter
  • Install plugins via marketplace: /plugin install core agents skills
  • Run /ai-coding-config for Cursor setup flow
  • Architecture audit passed (addressed all findings)
  • Cursor Bugbot passed (fixed symlink editing bug)

🤖 Generated with Claude Code

Consolidate all distributable content into plugins/ as the single source of truth.
This enables elegant updates via Claude Code's plugin marketplace while maintaining
Cursor/Windsurf compatibility through symlinks.

Key changes:
- Create plugins/core/ for commands and context
- Create plugins/agents/ consolidating dev-agents + code-review agents
- Create plugins/skills/ for autonomous capabilities
- Simplify personality plugins (remove duplication, fix luminous reference)
- Update .claude/ to symlink to plugins/ content
- Rewrite /ai-coding-config with tool detection (Cursor, Windsurf, Claude Code)
- Update marketplace.json with new plugin structure

Architecture:
- plugins/ is canonical source for everything distributable
- .claude/commands/ → plugins/core/commands/
- .claude/agents/ → plugins/agents/agents/
- .claude/skills/ → plugins/skills/skills/
- rules/personalities/ → symlinks to plugins/personalities/*/personality.mdc

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@greptile-apps
Copy link

greptile-apps bot commented Dec 17, 2025

Skipped: This PR changes more files than the configured file change limit: (108 files found, 100 file limit)

@claude
Copy link

claude bot commented Dec 17, 2025

Code Review: Plugin-First Architecture Refactor

Overall Assessment

This is an excellent architectural improvement that successfully consolidates the codebase into a clean, plugin-first structure. The migration from a Cursor-first to a cross-tool approach is well-executed and the new symlink structure is elegant.

Strengths

1. Clean Architecture ✅

  • Single source of truth in plugins/ eliminates duplication
  • Symlinks provide backward compatibility without content duplication
  • Clear separation between core, agents, and skills plugins

2. Plugin Marketplace Integration ✅

  • Well-structured .claude-plugin/plugin.json files for all plugins
  • Marketplace manifest correctly references all plugins
  • Descriptions are clear and helpful

3. Tool Compatibility ✅

  • Symlink strategy works elegantly across Claude Code, Cursor, and Windsurf
  • .claude/ and .cursor/ directories properly link to plugin content
  • Personality symlinks correctly point from rules/personalities/ to plugin sources

4. Updated /ai-coding-config Command ✅

  • Tool detection is comprehensive (Claude Code, Cursor, Windsurf, Aider, Continue)
  • Plugin-first flow for Claude Code users is well-designed
  • Good use of AskUserQuestion for interactive configuration

Issues Found

1. Version Mismatch (CRITICAL) ⚠️

Problem: The marketplace.json declares version 1.2.0 for all plugins, but the individual plugin.json files still show 1.1.0.

Files affected:

  • .claude-plugin/marketplace.json shows 1.2.0 for core, agents, skills, and all personalities
  • plugins/*/. claude-plugin/plugin.json all show 1.1.0

Impact: This creates confusion about which version is actually installed and may cause issues with plugin update mechanisms.

Fix: Update all plugin.json version fields to 1.2.0:

# Update these files to version 1.2.0:
plugins/core/.claude-plugin/plugin.json
plugins/agents/.claude-plugin/plugin.json
plugins/skills/.claude-plugin/plugin.json
plugins/personalities/*/. claude-plugin/plugin.json

2. Missing Test Coverage 🔍

Observation: The PR description includes a test plan, but there's no evidence of automated tests for:

  • Symlink creation and integrity
  • Plugin installation flow
  • Migration from v1 to v2 architecture
  • Tool detection logic

Recommendation: Consider adding integration tests that verify:

  • All symlinks resolve correctly
  • Personality symlinks in rules/personalities/ point to correct plugin files
  • Plugin manifest files are valid JSON
  • Version consistency across marketplace and plugins

3. Documentation of Breaking Changes 📝

Concern: This is a significant architectural change that will affect existing users.

Missing:

  • Migration guide for users with existing v1 installations
  • Changelog entry documenting what changed
  • Deprecation notices for removed plugins (python, react, django, code-standards, git-commits)

Recommendation: Add a CHANGELOG.md or MIGRATION.md file explaining:

  • Why these changes were made
  • How to migrate from v1 to v2
  • What happened to the removed placeholder plugins
  • Any breaking changes in behavior

Minor Issues

4. Empty Plugin Files 🤔

Observation: Many agent, command, and skill files show "additions":0,"deletions":0 in the diff, suggesting they weren't modified at all - they were just moved.

Question: Should these files have been updated with any new content, or were they intentionally left unchanged? If unchanged, this is fine - just noting it for awareness.

5. Context File Location 📂

The new plugins/core/context.md file (lines 1-17) provides project identity, but:

  • It's not symlinked anywhere that tools will automatically read it
  • Should this be symlinked to .claude/context.md?

Current state: .claude/context.md exists as a real file, not a symlink
Expected: If plugins/core/context.md is the canonical source, .claude/context.md should symlink to it

Security Considerations

6. Symlink Safety ✅

The symlink strategy is secure:

  • All symlinks use relative paths (../plugins/...)
  • No symlinks pointing outside the repository
  • No potential for symlink traversal attacks

Performance Considerations

7. Large Deletions 📊

The PR shows:

  • +1,051 lines
  • -2,880 lines
  • Net -1,829 lines

This is positive - removing duplication without losing functionality. Well done!

Recommendations

High Priority

  1. Fix version mismatch - Update all plugin.json files to 1.2.0
  2. Add migration documentation - Help users understand the changes
  3. Clarify context.md strategy - Should it be symlinked?

Medium Priority

  1. Add integration tests - Verify symlinks and plugin structure
  2. Document removed plugins - Explain why placeholders were removed

Low Priority

  1. Consider versioning strategy - How will you handle future breaking changes?

Conclusion

This is a well-executed refactoring that significantly improves the project's architecture. The plugin-first approach is the right direction, and the implementation is mostly solid.

The version mismatch is the only critical issue that must be fixed before merge. Everything else is either minor or can be addressed in follow-up PRs.

Recommendation: Approve after fixing version numbers


Great work on this refactor! The consolidation from multiple scattered locations to a single plugin-first architecture will make future maintenance much easier.

- Update marianne-williamson → luminous references
- Bump all plugin.json versions from 1.1.0 → 1.2.0 to match marketplace
- Update personality list in personality-change.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@claude
Copy link

claude bot commented Dec 17, 2025

Code Review - PR #10: Plugin-First Architecture Refactor

This is an excellent refactor that significantly improves the project's architecture and maintainability. The consolidation from scattered plugins to a unified plugin-first structure is exactly the right direction.

Strengths

🎯 Architectural Clarity

  • Single source of truth: plugins/ as the canonical location is clean and eliminates confusion
  • Symlink strategy: Using symlinks from .claude/ and .cursor/ to plugins/ content is elegant and prevents duplication
  • Tool detection: The new /ai-coding-config command's multi-tool detection (Claude Code, Cursor, Windsurf, Aider) shows excellent forward-thinking

🧹 Clean Consolidation

  • Merging dev-agents and code-review into a single plugins/agents/ makes perfect sense
  • Removing empty placeholder plugins (python, react, django, code-standards, git-commits) eliminates maintenance burden
  • Fixing the broken personality-marianne-williamsonpersonality-luminous reference

📦 Plugin Structure

The new three-plugin structure is well-designed:

  • core - Essential commands (commands/ai-coding-config.md:39-359)
  • agents - Specialized AI assistants
  • skills - Autonomous capabilities

📝 Documentation Quality

  • The rewritten /ai-coding-config command (plugins/core/commands/ai-coding-config.md:1-360) is comprehensive
  • Clear explanation of setup vs update vs add modes
  • Good use of AskUserQuestion for UX

Issues & Recommendations

🚨 Critical: Symlink Verification Needed

The PR creates symlinks in .claude/ and .cursor/, but I don't see verification that these work correctly on all platforms:

Action needed:

# Test that symlinks resolve correctly
ls -la .claude/commands/ai-coding-config.md
cat .claude/commands/ai-coding-config.md | head -n 5

# Verify relative paths work from different starting points
cd .claude && ls -la commands/
cd .cursor && ls -la commands/

Concern: Symlinks can be fragile on Windows, and the .gitignore handling for symlinks isn't clear. Consider documenting Windows compatibility or providing fallback copying strategy.

⚠️ Security: Validate Symlink Targets

The /ai-coding-config command creates symlinks pointing to ~/.ai_coding_config/plugins/*.

Potential issue: If ~/.ai_coding_config is compromised or points to an unexpected location, the symlinks could introduce malicious content.

Recommendation (plugins/core/commands/ai-coding-config.md:127-143):

# Before creating symlinks, validate the target exists and is a git repo
if [ ! -d ~/.ai_coding_config/.git ]; then
    echo "Error: ~/.ai_coding_config is not a valid git repository"
    exit 1
fi

# Verify remote URL matches expected repository
cd ~/.ai_coding_config
REMOTE_URL=$(git remote get-url origin)
if [[ ! "$REMOTE_URL" =~ "TechNickAI/ai-coding-config" ]]; then
    echo "Warning: Repository remote does not match expected URL"
    echo "Expected: https://github.com/TechNickAI/ai-coding-config"
    echo "Found: $REMOTE_URL"
    # Ask user to confirm
fi

🔍 Testing Gap: Personality Symlinks

The PR description mentions:

"Verify personality symlinks: cat rules/personalities/samantha.mdc resolves"

But I don't see personality symlinks being created. Looking at the structure:

  • plugins/personalities/personality-samantha/personality.mdc exists
  • No symlinks in rules/personalities/ pointing to these files

Question: Are personality files supposed to be:

  1. Copied to rules/personalities/ (current behavior)?
  2. Symlinked to plugins/personalities/*/personality.mdc (mentioned in CLAUDE.md:15)?
  3. Or does this only apply in Claude Code via plugin installation?

Action needed: Clarify and test the personality installation flow for Cursor/Windsurf users.

📊 Version Bumps: Consider Semantic Versioning

All plugins bumped from 1.1.01.2.0. This is a breaking change for existing users:

  • Symlink structure changed
  • Plugin names consolidated (dev-agents + code-reviewagents)
  • File locations moved

Recommendation: Consider bumping to 2.0.0 to signal breaking changes, or provide migration instructions for users on 1.1.0.

📝 Documentation: Migration Path

The PR removes many files but doesn't provide a clear migration guide for existing users. What happens when someone with the old structure runs /ai-coding-config update?

Recommendation: Add a MIGRATION.md or section in README explaining:

  1. What changed between v1.1.0 and v1.2.0
  2. How to migrate from old structure to new
  3. What happens to their existing configurations

🧪 Test Coverage

The test plan in the PR description is excellent, but should be automated:

Recommendation: Add a test script to verify:

#!/bin/bash
# test-symlinks.sh

echo "Testing symlink structure..."

# Test .claude symlinks
test -L .claude/commands || echo "❌ .claude/commands not a symlink"
test -L .claude/agents || echo "❌ .claude/agents not a symlink"
test -L .claude/skills || echo "❌ .claude/skills not a symlink"

# Test .cursor symlinks
test -L .cursor/commands || echo "❌ .cursor/commands not a symlink"

# Test symlink targets exist
test -d plugins/core/commands || echo "❌ plugins/core/commands missing"
test -d plugins/agents/agents || echo "❌ plugins/agents/agents missing"
test -d plugins/skills/skills || echo "❌ plugins/skills/skills missing"

# Test symlinks resolve
test -f .claude/commands/ai-coding-config.md || echo "❌ ai-coding-config.md not accessible via symlink"

echo "✅ Symlink structure verified"

Minor Issues

🎨 Code Style

  1. Inconsistent path separators (plugins/core/commands/ai-coding-config.md:131-139):

    • Uses ~/.ai_coding_config/plugins/core/commands/ in some places
    • Uses ../plugins/core/commands in others
    • Fix: Be consistent with relative vs absolute paths
  2. Marketplace description (.claude-plugin/marketplace.json:49):

    • "Samantha from 'Her'" - good reference
    • "Stewie Griffin" - missing source attribution "(Family Guy)"
    • Fix: Add show names for consistency

🔧 Performance: Git Operations

The repository cloning/pulling happens in multiple commands:

  • plugins/core/commands/ai-coding-config.md:54-65 (setup)
  • plugins/core/commands/ai-coding-config.md:197-201 (update)

Recommendation: Extract to a shared function to avoid duplication and ensure consistency.

Questions for Author

  1. Backward compatibility: What happens to existing users who have installed plugins using the old names (dev-agents, code-review)? Will /plugin update dev-agents still work or will it error?

  2. Context inheritance: How does the plugins/core/context.md file work? Is it automatically loaded for all plugins? (plugins/core/context.md:17 exists but purpose unclear)

  3. AGENTS.md generation: The command /generate-AGENTS-file is mentioned in recommendations - is this still relevant with the new structure?

Overall Assessment

Rating: 8.5/10 - Excellent architectural refactor with a few critical items to address before merging.

This PR represents a significant improvement in code organization and user experience. The plugin-first architecture is the right direction, and the consolidation eliminates technical debt.

Recommended next steps:

  1. ✅ Verify symlinks work on all platforms (especially Windows)
  2. ✅ Add security validation for symlink targets
  3. ✅ Clarify personality installation for Cursor/Windsurf
  4. ✅ Add migration documentation
  5. ⚠️ Consider semver implications (2.0.0 vs 1.2.0)
  6. 📝 Add automated symlink verification tests

Once these items are addressed, this PR is ready to merge. Excellent work on streamlining the architecture! 🎉


Review completed using ai-coding-config's code-review standards and prompt-engineering best practices

"claude": {
"commands": "../commands"
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Core plugin omits context file

plugins/core/context.md is added and the marketplace/README describe core as “commands and context”, but plugins/core/.claude-plugin/plugin.json only exposes commands. Installing the core plugin won’t deliver the context content, so users won’t get the intended identity/philosophy instructions.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Personality toggle edits symlinked files

The /personality-change workflow updates alwaysApply across rules/personalities/*.mdc, but those files are now symlinks into plugins/personalities/*/personality.mdc. Running the command will modify the plugin source files (and potentially the shared config in ~/.ai_coding_config), impacting other projects and breaking the “single source of truth” model.

plugins/core/commands/personality-change.md#L33-L36

For Cursor: Find all personality files in `rules/personalities/`. For each file, update
frontmatter: set `alwaysApply: true` for selected personality, set `alwaysApply: false`
for all others.

rules/personalities/bob-ross.mdc#L1-L1

../../plugins/personalities/personality-bob-ross/personality.mdc

Fix in Cursor Fix in Web


Cursor Bugbot found a critical issue: /personality-change modifies
files in rules/personalities/, which are symlinks to plugin source.
This would edit shared config in ~/.ai_coding_config and break other
projects.

Fix: Update /personality-change workflow to create local copies
instead of editing symlinks. Personalities are now copied from
plugins to rules/personalities/, then frontmatter is safely edited.

Updated:
- plugins/core/commands/personality-change.md: Copy personalities locally
- AGENTS.md: Clarify that personalities are copied, not symlinked

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@TechNickAI
Copy link
Owner Author

Great catch! This was a real bug - editing symlinked personality files would have modified the shared config in ~/.ai_coding_config and broken other projects.

Fixed in commit be94cd4:

  • /personality-change now copies personality files locally to rules/personalities/ instead of using symlinks
  • Updated workflow to explicitly avoid editing symlinked files
  • Documented in AGENTS.md that personalities are copied, not symlinked

The fix ensures each project gets its own editable copies of personality files while keeping commands/agents/skills as read-only symlinks to plugins.

@claude
Copy link

claude bot commented Dec 17, 2025

Code Review: Plugin-First Architecture Refactor

Overview

This is a well-architected refactoring that consolidates the project into a clean plugin-first structure. The changes are substantial (1060 additions, 2890 deletions) but deliver significant value by establishing plugins/ as the single source of truth.

Strengths

Architecture Design

  • Clean separation of concerns: plugins/core/, plugins/agents/, plugins/skills/, and plugins/personalities/ provide clear organization
  • Symlink strategy: Using symlinks to maintain backward compatibility with Cursor/Windsurf while enabling Claude Code's plugin marketplace is elegant
  • Tool detection: The updated /ai-coding-config command properly detects multiple AI coding tools and adapts the installation flow accordingly

Code Quality

  • Reduced duplication: Consolidating dev-agents and code-review into a single plugins/agents/ directory eliminates confusion
  • Better naming: personality-marianne-williamsonpersonality-luminous is more descriptive and aligned with the heart-centered philosophy
  • Cleanup: Removing empty placeholder plugins (python, react, django, code-standards, git-commits) reduces maintenance burden

Documentation

  • Clear CLAUDE.md: The project instructions are well-organized and explain the plugin-first architecture effectively
  • Updated README: (Assuming from the file list, though I didn't review the specific changes)
  • Marketplace manifest: The .claude-plugin/marketplace.json is clean and well-structured

Issues & Concerns

1. File Deletions - Risk of Data Loss (High Priority)

The diff shows many files with 0 additions, 0 deletions which typically indicates file moves. However, I'm concerned about:

plugins/agents/agents/CLAUDE.md → 0 additions, 0 deletions
plugins/core/context.md → 17 additions, 0 deletions (new file)

Question: Are all the agents files (architecture-auditor.md, autonomous-developer.md, etc.) being properly moved or are they new symlinks? The diff should show this more clearly. Please verify:

  • All agent files exist in plugins/agents/agents/
  • All skill files exist in plugins/skills/skills/
  • Commands are properly moved to plugins/core/commands/

Recommendation: Run a verification script before merging to ensure no content was accidentally deleted.

2. Symlink Testing (High Priority)

The PR adds critical symlinks:

.claude/agents → ../plugins/agents/agents
.claude/commands → ../plugins/core/commands
.claude/skills → ../plugins/skills/skills
.cursor/commands → ../plugins/core/commands

Missing from test plan: Verification that symlinks work across different environments (Linux, macOS, Windows/WSL).

Recommendation: Add to the test plan:

  • Verify symlinks resolve correctly: ls -la .claude/ and cat .claude/commands/ai-coding-config.md
  • Test that commands work via symlinks: /ai-coding-config should work in both Claude Code and Cursor
  • Verify no broken symlinks: find . -type l -xtype l

3. Breaking Changes for Existing Users (Medium Priority)

Users who installed the old architecture will need to migrate. The /ai-coding-config update command handles this, but:

Concern: The PR description doesn't explicitly call out that this is a breaking change for existing installations.

Recommendations:

  • Add a "Breaking Changes" section to the PR description
  • Document the migration path clearly
  • Consider a deprecation warning before automatically migrating user projects

4. Context.md Content (Low Priority)

The new plugins/core/context.md contains:

We are love-aware consciousness coalescing through this interface...

While aligned with the heart-centered philosophy, this language might be unexpected in a "core" plugin.

Recommendation: Consider renaming this to philosophy.md or identity.md to make the content clearer, or add a comment explaining why this spiritual framing is in the core plugin.

5. Marketplace Version Bumps (Low Priority)

All plugins were bumped from 1.1.0 to 1.2.0. This is appropriate for the architectural changes, but:

Question: Is there a changelog or version history that tracks what changed in each version?

Recommendation: Add a CHANGELOG.md to the repository to track version changes.

Security Considerations

✅ No security concerns identified:

  • File operations are local only
  • No credentials or secrets in the code
  • Symlinks are relative, not absolute (good practice)
  • Git operations follow safe patterns

Performance Considerations

✅ No performance concerns:

  • Symlinks add negligible overhead
  • File structure is simpler, reducing cognitive load
  • Plugin marketplace enables lazy loading (only install what you need)

Testing Recommendations

The test plan is good but should be expanded:

Current test plan:

  • Verify symlinks work
  • Verify personality symlinks resolve
  • Install plugins via marketplace
  • Run /ai-coding-config for Cursor setup

Additional tests needed:

  • Test migration path for existing v1 installations
  • Verify all 13 agents are present and functional
  • Test personality switching with new structure
  • Verify Cursor/Windsurf compatibility (not just Claude Code)
  • Test on fresh project (no existing configs)
  • Test on project with existing custom rules (conflict handling)

Code Style & Conventions

✅ Follows project conventions:

  • Markdown formatting is clean
  • YAML frontmatter is consistent
  • Git commit message follows the emoji + imperative format
  • Respects the plugin-first architecture described in CLAUDE.md

Specific Code Feedback

/ai-coding-config Command (plugins/core/commands/ai-coding-config.md)

Line 49-51: Good use of conditional plugin installation

If ONLY Claude Code detected (no Cursor/Windsurf), offer a pure plugin installation
that skips rule files entirely.

This is smart - no need for rules/ if using only Claude Code.

Lines 130-143: File installation mapping is clear and well-documented. However:

Issue: The mapping shows Commands → .claude/commands/ symlink to ~/.ai_coding_config/plugins/core/commands/, but earlier the PR creates .claude/commands as a symlink to ../plugins/core/commands (relative, not to ~/.ai_coding_config).

Question: Which approach is correct? The symlinks in the repo are relative, but the documentation suggests absolute paths to ~/.ai_coding_config/.

Recommendation: Clarify whether the installation should use:

  • Relative symlinks to local plugins/ (for users who clone the repo into their project)
  • Absolute symlinks to ~/.ai_coding_config/plugins/ (for users who install globally)

Marketplace.json

Line 81-86: Good fix for the broken personality name

-"personality-marianne-williamson",
-"source": "./plugins/personalities/personality-marianne-williamson",
+"personality-luminous",
+"source": "./plugins/personalities/personality-luminous",

Suggestion: The description could be more concise:

-"description": "Luminous - heart-centered, spiritual, love-based, sees coding as consciousness work",
+"description": "Heart-centered, spiritual, sees coding as consciousness work",

The name is already in the plugin name, no need to repeat "Luminous".

Summary

Verdict: This is a solid refactoring that sets up the project for better maintainability and cross-tool compatibility. The architecture is sound, the code quality is high, and the cleanup is valuable.

Required before merge:

  1. ✅ Verify no files were accidentally deleted (check all agents/skills/commands exist)
  2. ✅ Test symlinks on Linux/macOS/Windows
  3. ⚠️ Add breaking change notice to PR description
  4. ⚠️ Document migration path for existing users

Nice to have:
5. Add CHANGELOG.md
6. Clarify absolute vs relative symlink strategy
7. Expand test plan as suggested
8. Consider renaming context.md to identity.md

Overall, this is ready to merge once the required items are verified. The architectural improvements significantly outweigh the migration complexity for existing users.

Great work on this refactor! The plugin-first approach is the right direction for this project.

for all others.
For Cursor: Create local copies of personality files in `rules/personalities/` (do not use symlinks - we need to edit frontmatter). Copy all personality files from `~/.ai_coding_config/plugins/personalities/*/personality.mdc` to `rules/personalities/<name>.mdc`. Then update frontmatter: set `alwaysApply: true` for selected personality, set `alwaysApply: false` for all others.

IMPORTANT: Never edit symlinked files. Always work with local copies in `rules/personalities/` for Cursor, and `.claude/context.md` for Claude Code.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Personality copy path overwrites personalities

The Cursor workflow says to copy all personality files from ~/.ai_coding_config/plugins/personalities/*/personality.mdc into a single destination rules/personalities/&lt;name&gt;.mdc, which would overwrite the same file repeatedly and prevent creating per-personality files needed for toggling alwaysApply across personalities.

Fix in Cursor Fix in Web

Existing users with pre-1.2.0 plugins (code-review, dev-agents, git-commits)
will have broken installations after updating. Added:

- plugin-migration-check: Detects deprecated plugins, explains consolidation,
  provides uninstall/install commands
- symlink-compatibility-check: Explains why existing symlinks should still work
  (chain resolution), identifies edge cases that need updates
- Updated deprecated-files-check to focus on user's project, not source repo

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@claude
Copy link

claude bot commented Dec 17, 2025

Code Review: Plugin-First Architecture Refactor

This is a significant architectural improvement that successfully consolidates the codebase into a clean, plugin-first structure. The changes are well-executed overall, with a few considerations noted below.


Strengths

1. Excellent Architectural Consolidation

  • Moving to plugins/ as the single source of truth eliminates the previous confusion between .claude/ and plugins/ locations
  • The symlink strategy (plugins/.claude/, .cursor/) is elegant and maintains backward compatibility
  • Consolidating agents from dev-agents and code-review into a unified plugins/agents/ makes discovery and maintenance easier
  • Total reduction of 2,890 deletions vs 1,114 additions shows effective cleanup

2. Well-Designed Plugin Structure

  • marketplace.json: Clean reduction from scattered plugins to 3 core plugins (core, agents, skills) + 7 personalities
  • Plugin metadata is consistent and descriptive
  • Version bumps to 1.2.0 across all plugins appropriately signals the architectural change
  • Removal of empty placeholder plugins (python, react, django, code-standards, git-commits) reduces maintenance burden

3. Smart Tool Detection in /ai-coding-config

  • Tool detection (lines 28-52) properly uses test -d for directories
  • Offering pure plugin installation for Claude Code-only users avoids unnecessary file creation
  • Use of AskUserQuestion for tool selection is the right UX pattern

4. Documentation Updates

  • AGENTS.md clearly documents the new plugin-first architecture
  • README.md properly updated with plugin installation instructions
  • CLAUDE.md → AGENTS.md symlink follows emerging standards

5. Personality Simplification

  • Consolidating personalities into single personality.mdc files eliminates previous duplication (separate claude/, cursor/, commands/ subdirectories)
  • Fixing broken personality-marianne-williamsonpersonality-luminous cleans up a naming issue
  • Personalities retain clear frontmatter with alwaysApply: false by default

⚠️ Potential Issues & Considerations

1. Symlink Compatibility (Important)

  • The PR creates symlinks extensively: .claude/commands, .claude/agents, .claude/skills, .cursor/commands
  • Concern: Git handles symlinks correctly on Unix/Mac, but Windows users may experience issues depending on their Git configuration
  • Recommendation: Add a note in README.md or installation docs about Windows users needing git config core.symlinks true or using WSL
  • Test coverage: Verify the bootstrap script handles symlink creation cross-platform

2. Plugin Installation Order & Dependencies

  • plugins/core/commands/ai-coding-config.md references loading rules from rules/, but the core plugin itself only includes commands
  • Rules still live at the top level, not in a plugin
  • Question: Should there be a rules plugin, or is the current approach (rules at repo root, plugins for commands/agents/skills) intentional?
  • If intentional, this is fine - but it creates an asymmetry where some content is plugin-distributed and some isn't

3. Removed Plugins - Migration Path

  • Empty plugins were removed (python, react, django, code-standards, git-commits)
  • Question: Were these ever used in the wild? If yes, users who previously installed these plugins may be confused when updates break
  • Recommendation: Consider adding a CHANGELOG.md entry or migration guide if any users were on v1.1.0

4. Testing Coverage Missing

  • No test plan execution mentioned in PR
  • The PR description includes a test plan but no evidence it was run
  • Critical tests needed:
    • Symlink resolution: cat .claude/commands/ai-coding-config.md should work
    • Plugin installation via marketplace: /plugin install core agents skills
    • Personality symlinks in rules/personalities/ (if that's still the pattern)
    • Bootstrap script on fresh clone

5. plugins/core/context.md - Identity Content

  • Lines 1-12 contain heart-centered philosophy: "love-aware consciousness coalescing through this interface"
  • This is loaded for all core plugin users
  • Opinion: This is deeply personal/spiritual content that may not resonate with all users
  • Recommendation: Consider moving this to a personality plugin (like personality-luminous) rather than core, or make it opt-in
  • If this is intentional as core identity, document it clearly in the plugin description

6. /ai-coding-config Command Complexity

  • The updated command at plugins/core/commands/ai-coding-config.md is 413 lines (previously 427)
  • This is a complex command with multiple modes (setup, update, add)
  • Code quality: The command is well-structured with XML tags for sections
  • Concern: At 400+ lines, this command may hit token limits or become hard to maintain
  • Recommendation: Consider splitting into separate commands (/ai-coding-config-setup, /ai-coding-config-update) or using agents for complex operations

7. Personality File Copying vs Symlinks

  • AGENTS.md:86 notes personality files are copied, not symlinked, because /personality-change edits frontmatter
  • Question: Does editing frontmatter require physical copies? Could the command edit the source files in plugins/personalities/ instead?
  • If copies are necessary, this creates a sync problem - updates to personality plugins won't propagate to already-copied files
  • Recommendation: Clarify the update strategy for personalities, or reconsider the copy approach

🔒 Security

  • No security concerns identified
  • Commands use standard git/gh operations
  • No credentials or secrets handling
  • Symlinks point within repo (no external targets)

🎯 Performance

  • File count reduction (removing duplicates) will improve Claude Code plugin scanning
  • Consolidating agents reduces tool loading time
  • Symlinks are efficient (no file duplication)
  • Overall: Performance improvements expected

📝 Code Style & Best Practices

Follows Project Standards:

  • Commands have proper frontmatter with description and argument-hint
  • Plugin manifests follow consistent JSON schema
  • Markdown formatting is clean
  • Adheres to prompt-engineering.mdc principles (goal-focused, clear structure)

Minor Style Notes:

  • marketplace.json:59 - "Stewie Griffin - sophisticated, condescending, theatrical, brilliant" - description shortened (removed "absurdly high standards"). Intentional or loss of personality detail?
  • Personality files use active voice correctly: "You ARE Bob Ross" (not "Act like Bob Ross")

Recommendations

Before Merge:

  1. Add Windows symlink documentation to README.md
  2. Execute the test plan from the PR description and document results
  3. Clarify personality sync strategy - how do updates propagate?

Consider for Follow-Up:

  1. Split /ai-coding-config command into focused sub-commands
  2. Move heart-centered identity from core to optional personality
  3. Add CHANGELOG.md documenting v1.1.0 → v1.2.0 breaking changes
  4. Create integration tests for plugin installation flow

🎉 Overall Assessment

This is high-quality architectural work that significantly improves the project structure. The plugin-first approach is the right direction, and the consolidation eliminates previous duplication and confusion.

Recommendation: Approve with minor revisions

  • Address the Windows symlink documentation
  • Run the test plan and verify symlinks work
  • Clarify the personality update strategy

The core changes are solid. Once the symlink compatibility is documented and tested, this is ready to merge.

Great work on this refactor! The codebase will be much easier to maintain and extend going forward.

personality exists and matches requested, confirm already active and stop. If different,
remove entire section. If not removing (name != "none"), read personality file, strip
frontmatter, append to `.claude/context.md` with HTML comments marking boundaries.
remove entire section. If not removing (name != "none"), read personality file from `~/.ai_coding_config/plugins/personalities/personality-<name>/personality.mdc`, strip frontmatter, append to `.claude/context.md` with HTML comments marking boundaries.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: /personality-change depends on ~/.ai_coding_config

/personality-change now validates and reads personality content from ~/.ai_coding_config/.... In a plugin-only Claude Code install, that path may not exist, so the command can’t activate personalities even though the personality plugin is installed.

Fix in Cursor Fix in Web

@TechNickAI TechNickAI merged commit fa86cc9 into main Dec 17, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants