This page provides an honest, transparent view of Cortex TMS’s current limitations, known issues, and planned improvements. Understanding these constraints will help you make informed decisions and set appropriate expectations.
Current Version Information
Cortex TMS v2.6.0 (Latest Stable Release)
Release Date: January 18, 2026
Status: Production Ready
Node.js Requirement: 18.0.0 or higher
Critical Known Issues
If you discover a critical issue, please report it immediately via GitHub Issues with the “critical” label.
Platform-Specific Limitations
Windows-Specific Issues
Symlink Creation Requires Admin
Symptom: EPERM: operation not permitted, symlink errors during npm link testing.
Cause: Windows requires administrator privileges or Developer Mode for symlink creation.
Symptom: Template paths using forward slashes (/) may not resolve correctly.
Status: Cortex TMS uses path.join() internally, so this is largely resolved.
Edge Case: If you manually construct file paths in custom scripts, use path.join() or path.resolve().
Line Ending Inconsistencies (CRLF vs LF)
Symptom: Git reports file changes when no actual content changed.
Cause: Windows uses CRLF (\r\n) while Unix uses LF (\n).
Solution: Configure Git to auto-convert line endings:
Terminal window
gitconfig--globalcore.autocrlftrue# Windows
gitconfig--globalcore.autocrlfinput# macOS/Linux
macOS-Specific Issues
Case-Sensitive File Systems (Optional)
macOS defaults to case-insensitive file systems (APFS is case-preserving but not case-sensitive)
If you’ve manually formatted your drive as case-sensitive, be aware that PATTERNS.md and patterns.md are different files
Cortex TMS follows the uppercase convention (e.g., PATTERNS.md, ARCHITECTURE.md)
Linux-Specific Issues
Snap-Installed Node.js Permissions
If Node.js is installed via Snap, you may encounter permission issues with global package installations
Workaround: Use nvm (Node Version Manager) or install Node.js via your distribution’s package manager
Feature Limitations
CLI Command Constraints
cortex-tms init
No Multi-Project Batch Initialization: You cannot initialize multiple projects in one command. You must run cortex-tms init in each project directory individually.
Workaround (Bash):
Terminal window
fordirinproject1project2project3; do
cd$dir && cortex-tmsinit--scopestandard && cd..
done
Cannot Re-initialize Without Overwriting: If you run cortex-tms init in a project that already has TMS files, you’ll be prompted to overwrite. There’s no “merge” mode.
Workaround: Use cortex-tms migrate to upgrade existing files.
Interactive Prompts Require TTY: Non-interactive environments (CI/CD pipelines) must use --scope flag explicitly.
Terminal window
# ✅ Works in CI/CD
cortex-tmsinit--scopestandard
# ❌ Fails in CI/CD (no TTY for prompts)
cortex-tmsinit
cortex-tms validate
Line Count Enforcement is Static: The default line limits (200 for NEXT-TASKS.md, 100 for copilot-instructions.md) are hardcoded. While you can override them in .cortexrc, you cannot disable line limit checking entirely.
Workaround: Set extremely high limits in .cortexrc if you truly need unlimited files:
{
"lineLimits": {
"NEXT-TASKS.md": 999999
}
}
No Partial Validation: You cannot validate only specific files; cortex-tms validate always checks all mandatory files.
Archive Detection Heuristic: The archive warning (when docs/archive/ has more than 5 files) is a heuristic, not a strict rule. Some projects legitimately need many archived documents.
cortex-tms migrate
Cannot Customize Template Source: The migration system always pulls templates from the installed cortex-tms package. You cannot specify a custom template directory.
Roadmap: Custom template directories planned for v2.7.
Backup Pruning is Automatic: Backups older than the 10 most recent are automatically deleted. You cannot configure retention policy.
Workaround: Manually copy .cortex/backups/ to a separate location for long-term archival.
No Selective File Migration: When you run migrate --apply, you cannot choose which specific files to upgrade. It upgrades all OUTDATED files in batch.
Workaround: Manually copy individual templates from node_modules/cortex-tms/templates/.
cortex-tms status
No JSON Output: The status dashboard is designed for human readability only. There’s no --json flag for programmatic consumption.
Use Case: If you need to parse project status in scripts, directly read NEXT-TASKS.md and parse the markdown.
Progress Bar is Approximate: The sprint progress percentage is calculated from task status markers (✅ Done, ⬜ Todo). If tasks have uneven complexity, the visual bar may not reflect true completion.
cortex-tms prompt
Clipboard Integration Fails in Headless Environments: SSH sessions and Docker containers without X11 forwarding cannot access the clipboard.
Workaround: The prompt text is still printed to stdout. Manually copy it or redirect to a file:
Terminal window
cortex-tmspromptinit-session>/tmp/prompt.txt
Prompt Library is Static: The Essential 7 prompts are embedded in the CLI. While you can customize PROMPTS.md in your project, the CLI doesn’t read from it.
Why: Ensures consistency across installations. Custom prompts are for AI agents to read directly from PROMPTS.md.
File Size and Content Constraints
Hard Limits
File Names Must Use Exact Casing: Template files expect uppercase naming (e.g., PATTERNS.md, not patterns.md). The validation system is case-sensitive.
Placeholder Syntax is Required: If you want the validation system to detect unfilled templates, use [Description] syntax. Other placeholder styles (like TODO, FIXME, <placeholder>) are not recognized.
Archive Directory Must Be Named archive/: The validation system specifically checks for docs/archive/. Renaming it to historical/ or old/ will break archive detection.
Version Comments Must Match Format: Files use <!-- @cortex-tms-version 2.6.0 --> for version tracking. Deviating from this format (e.g., <!-- Version: 2.6.0 -->) breaks migration detection.
Soft Limits (Configurable)
Default Line Limits:
NEXT-TASKS.md: 200 lines
.github/copilot-instructions.md: 100 lines
All other docs/core/ files: 1000 lines (configurable via .cortexrc)
Maximum Files in Archive: No hard limit, but validation warns if docs/archive/ exceeds 5 files (suggests cleanup).
Template System Limitations
Framework Compatibility
Cortex TMS templates are framework-agnostic by design, meaning:
✅ Works With: Any language/framework (JavaScript, Python, Rust, Go, etc.)
❌ No Framework-Specific Features: No integration with Next.js config, Django settings, etc.
Trade-Off: You gain flexibility but lose framework-specific automation
Example: Cortex TMS won’t auto-populate your ARCHITECTURE.md with your Next.js routes or database schema. You must fill those in manually.
Template Customization
Cannot Override Individual Template Sections: When you run migrate --apply, the entire file is replaced. You cannot selectively upgrade just the header or footer.
No Template Inheritance: You cannot create a “child” template that inherits from a “parent” template. Each template file is standalone.
Placeholder Replacement is Manual: The CLI does not auto-replace placeholders like [Project Name] with your actual project name from package.json. This is intentional—AI agents handle replacement during sessions.
AI Agent Integration Constraints
Edge Cases in AI Behavior
File Size Affects Token Budget: Even though Cortex TMS keeps files small (200 lines for NEXT-TASKS.md), AI agents may still struggle with dense technical content.
Best Practice: Use bullet points, not paragraphs, in task descriptions.
Agents May Skip WARM Tier Files: If you don’t explicitly prompt the agent to read docs/core/PATTERNS.md, it might not discover it on its own.
Mitigation: Use cortex-tms prompt feature to generate prompts that reference PATTERNS.md explicitly.
Historical Noise in Git Commits: Even with aggressive archiving, AI agents sometimes read old Git commit messages. This is outside Cortex TMS’s control.
Workaround: Use conventional commits (enforced by Git Guardian in v2.6.0) to make commit history more parseable.
Placeholder Detection Failures: If you write [TODO: Add description], the validation system sees [TODO as a placeholder and flags it. Use TODO without brackets or [Add description] instead.
Multi-Agent Conflicts
If multiple AI agents (Claude + Copilot) work on the same project simultaneously:
Risk: Race conditions when updating NEXT-TASKS.md
Mitigation: Treat NEXT-TASKS.md as single-writer (one AI agent at a time). Use Git branches for parallel work.
Development Workflow Constraints
Pre-Commit Validation Scope
MDX Syntax Errors Not Caught Pre-Commit: Website documentation syntax errors (MDX, JSX) pass through pre-commit validation.
Impact: Low - Errors surface immediately during local development preview or website build.
Example: Using <200 instead of <200 in MDX files passes pre-commit but fails build.
Workaround:
Run npm run build from website directory before committing documentation changes
Preview website locally during development (npm run dev)
Rely on website build errors for immediate feedback
Why Not Fixed: Adding website build to pre-commit adds 15-30 seconds to every documentation commit. Current manual validation is sufficient given:
Documentation commits are ~10% of total commits
Errors are caught within minutes during preview
Fast feedback loop is more important than automated validation for current team size
Future Enhancement: Will implement automated build validation if MDX errors become recurring (threshold: 3+ errors in a sprint). Deferred to v2.9+ unless frequency increases.
No Automated Test Runs Pre-Commit: Test suite (74 tests) runs on-demand, not automatically before commit.
Rationale: Tests take ~500ms but run frequently during development. Auto-running adds friction without proportional benefit.
Workaround: Run npm test manually before commits that touch core logic.
CI/CD Safety Net: All tests run in GitHub Actions before merge to main.
Trade-off Philosophy: Cortex TMS prioritizes fast iteration over perfect automation. Pre-commit hooks enforce critical rules (Git protocol) while trusting developers for quality checks (tests, builds).
Planned Improvements
Roadmap: v2.7 (Custom Extensibility)
Custom Template Directories
Status: Planned
Goal: Allow users to specify custom template sources via .cortexrc
Use Case: Organizations can maintain internal template libraries
User-Defined Pattern Sets
Status: Planned
Goal: Extend validation rules with custom pattern matching
Use Case: Enforce company-specific conventions (e.g., ticket ID format)
Telemetry (Opt-In)
Status: Under Consideration
Goal: Anonymous usage metrics to prioritize features
Privacy: Fully opt-in, no data collection by default
Roadmap: v3.0 (Long-Term Vision)
Plugin System: Allow third-party extensions for validators, migrators, and prompt engines
IDE Extensions: VS Code/JetBrains plugins for inline TMS awareness
Template Marketplace: Community-contributed templates for specific frameworks (Next.js, Django, FastAPI, etc.)
File Validation is Content-Based, Not Schema-Based
Limitation: Cortex TMS validates file existence, line counts, and placeholders. It does NOT validate markdown structure, frontmatter schema, or content semantics.
Example: The following is considered “valid” even though it’s nonsensical:
# NEXT: Upcoming Tasks
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[Placeholder that doesn't describe anything useful]
Why This Design: Cortex TMS is framework-agnostic and intentionally permissive. Enforcing strict schemas would limit flexibility.
When You Need Stricter Validation:
Use a markdown linter like markdownlint:
Terminal window
npminstall-gmarkdownlint-cli
# Lint all markdown files
markdownlint'**/*.md'--ignorenode_modules
Create .markdownlint.json:
{
"MD013": { "line_length": 120 },
"MD033": false,
"MD041": false
}
Migration System Edge Cases
Cannot Migrate Files Modified Outside Standard Templates
Scenario: You created a custom file docs/core/INTEGRATION-TESTS.md in your project (not part of standard templates).
Problem: cortex-tms migrate doesn’t track or manage custom files.
Impact: If Cortex TMS later adds INTEGRATION-TESTS.md as a standard template, there’s no automatic merge—manual resolution required.
Best Practice: Prefix custom files with your project name or convention:
docs/core/MYPROJECT-INTEGRATION-TESTS.md (less likely to conflict)
Or keep custom docs in docs/project/ (separate from docs/core/)
Backup Restore Overwrites All Files in Scope
Limitation: cortex-tms migrate --rollback restores the ENTIRE backup directory, not selective files.
Use Case: You want to restore only PATTERNS.md from a backup but keep other updated files.
Last Updated: January 19, 2026 (for Cortex TMS v2.6.0)
Maintained By: Cortex TMS Contributors
Feedback: Open an issue or submit a PR to improve this page