{"version":"2.1.221","anchor":"claude-ai-export-importer-hardened-project-instructions-move","canonical_anchor":"claude-ai-export-importer-hardened-project-instructions-move","heading":"Claude.ai export importer hardened, project instructions moved out of CLAUDE.md","tier":"notice","area":"Internals","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/claude-ai-export-importer-hardened-project-instructions-move","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### Claude.ai export importer hardened, project instructions moved out of CLAUDE.md\n\nClaude.ai imports are validated, and project instructions now land in project-instructions.md instead of CLAUDE.md.\n\n**What**\n\nThe importer now validates the export JSON before trusting it, and imported content can no longer masquerade as agent configuration.\n\n**Details**\n\n- every field is type-checked (uuid, name, prompt_template, docs, files entries) and malformed records are skipped rather than imported\n- project directory names are capped at 200 characters against a name pattern; imported filenames are sanitised to at most 128 characters\n- a project's prompt template is written to `project-instructions.md` instead of `CLAUDE.md`\n- any imported doc or file whose name would collide with an agent-config file (claude.md, .claude*, .cursorrules, .windsurfrules, .clinerules, project-instructions.md and similar) is prefixed so it cannot be picked up as configuration\n\n**Evidence**\n\n`project-instructions.md`\n\n- Area: Internals\n- Names: `project-instructions.md`\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 0\/5"}