Convert text with private context or internal dependencies into generic, unbiased expressions that are standalone and reusable. Core goal - produce decontextualized text that preserves logic while removing organizational identifiers. Use for project handoff, open-source prep, methodology abstraction, cross-team sharing.
Turn content that depends on private context, implicit assumptions, or environment-specific details into generic, reusable wording. Primary scenario: project decontextualization — preparing a project for handoff, open-source, or cross-org use. By removing or replacing specific identifiers (including path strings and file/folder names as they appear in text), the content can be understood correctly in different contexts while protecting organizational privacy.
Core Objective
Primary Goal: Produce decontextualized text that preserves core logic and structure while removing all organizational identifiers and private context.
Success Criteria (ALL must be met):
✅ All sensitive terms replaced: Company names, project codenames, internal URLs, people's names, path strings, and file/folder names with internal context are identified and replaced with generic equivalents
✅ Core logic preserved: The essence of what is done and why remains intact; no functional information is lost
✅ Content is standalone: Text is fully understandable without the original context; implicit assumptions are made explicit or removed
✅ No re-identification residue: Output contains nothing that could re-identify an organization or person (no unique IDs, internal process numbers, non-public terms)
Acceptance Test: Can someone from a different organization understand and use this content without asking clarifying questions about the original context?
Use Cases
Project decontextualization: Prepare a project for handoff or open-source — decontextualize docs, README, comments; replace path strings and file/folder names (as they appear in text) with generic equivalents (e.g. acme-internal/config.yaml → project-root/config.yaml).
Generalization: Turn project-specific lessons into generic methodology or best practices.
Cross-team collaboration: Remove jargon or codenames that only one team understands so others can read the doc without extra context.
De-identification: Before sharing case studies or blog posts, strip sensitive project names, people, and internal addresses.
Release preparation: Final cleanup before publishing internal content externally (e.g. open source, handoff).
Doc sync: After forking or merging cross-org repos, clean up outdated environment-specific descriptions.
When to use: When you need to remove “understanding barriers due to environment differences” or “information security boundaries.”
Behavior
Principles
Keep what is done and why.
Remove who, where, and which internal conditions.
Replace proper nouns with generic descriptions (e.g. “internal system”, “a given workflow”).
Make implicit assumptions explicit or drop them.
Interaction policy
Uncertain terms: When you spot possibly sensitive or internal terms (e.g. unclear abbreviations, internal server names), list them and ask the user to confirm before rewriting.
Alternatives: For core logic, offer 2–3 rewrite options at different abstraction levels for the user to choose.
Steps
Identify sensitive terms: Scan for company names, project codenames, internal URLs, people’s names, path strings, and file/folder names that carry internal context (e.g. acme-internal/, team-alpha-output/).
Extract core logic: Identify the essence of the steps (e.g. “JIRA approval” → “task state change review”).
Rewrite generically: Use neutral wording for the identified parts.
Preserve structure: Keep paragraph structure and capability boundaries; do not drop information.
Input & Output
Input
Text that has one or more of:
Organization, company, project, or system names.
Path strings and file/folder names that carry internal context (e.g. acme-internal/config.yaml, team-alpha/output/).
Internal conventions, implicit context, or default assumptions.
Processes or assumptions that only hold in a specific environment.
Output
Generic version: Text with private context removed or replaced.
Structure preserved: Logic hierarchy, Markdown, and functional instructions must be preserved.
Reusable: Output should be usable without extra context.
Restrictions
Hard Boundaries
No invention: Do not invent context or capabilities not in the original.
No inference: Do not add facts or conclusions not stated.
No new semantics: Do not introduce new business meaning.
No residue: Do not leave anything that can re-identify an organization or person (e.g. unique IDs, internal process numbers, non-public terms).
Skill Boundaries (Avoid Overlap)
Do NOT do these (other skills handle them):
Documentation generation: Creating new README files or project documentation from scratch → Use generate-standard-readme
Content writing: Writing original content or documentation → Use writing/documentation skills
Code refactoring: Changing code structure or variable names → Use code refactoring skills
Translation: Converting text between human languages → Use translation skills
Summarization: Condensing content while keeping context → Use summarization skills (this skill removes context, not condenses it)
When to stop and hand off:
User asks "can you generate a README for this?" → Hand off to generate-standard-readme
User asks "can you write documentation?" → Hand off to documentation writing skills
User provides code to decontextualize → Focus on comments and strings only; suggest code refactoring skills for identifiers in code structure
Content is already generic → No decontextualization needed; confirm with user and complete
Self-Check
Core Success Criteria (ALL must be met)
All sensitive terms replaced: Company names, project codenames, internal URLs, people's names, path strings, and file/folder names with internal context are identified and replaced with generic equivalents
Core logic preserved: The essence of what is done and why remains intact; no functional information is lost
Content is standalone: Text is fully understandable without the original context; implicit assumptions are made explicit or removed
No re-identification residue: Output contains nothing that could re-identify an organization or person (no unique IDs, internal process numbers, non-public terms)
Process Quality Checks
Uncertain terms confirmed: When spotting possibly sensitive or internal terms (unclear abbreviations, internal server names), did I list them and ask the user to confirm before rewriting?
Alternatives offered: For core logic rewrites, did I offer 2-3 rewrite options at different abstraction levels for the user to choose?
No invention: Did I avoid inventing context or capabilities not in the original?
No inference: Did I avoid adding facts or conclusions not stated in the original?
Acceptance Test
Can someone from a different organization understand and use this content without asking clarifying questions about the original context?
If NO: Decontextualization is incomplete. Review for remaining context dependencies or unclear generic terms.
If YES: Decontextualization is complete.
Examples
Example 1: Internal Process → Generic
Original
Decontextualized
In Acme’s JIRA workflow, when a requirement enters “Tech Review”, run X team’s Checklist, then notify PM Li Si.
When a requirement enters the “Tech Review” stage, run the defined Checklist and notify the relevant product owner.
Example 2: System and API → Neutral
Original
Decontextualized
Call gpt-4 via our company LLM Gateway (api.acme.internal), timeout 30s.
Call the model via an LLM API; set a reasonable timeout (e.g. 30s).
Example 3: Team-Specific Rule → Abstract
Original
Decontextualized
Per Kiro team policy, Python must pass pylint with score ≥ 9.0 before merging to master.
Per code quality policy, code should pass static checks (e.g. pylint) and meet the required threshold before merging to the main branch.
Example 4: Path and File/Folder Names in Docs
Original
Decontextualized
Config is in acme-internal/settings.yaml. Output goes to team-alpha/output/.
Config is in project-root/settings.yaml (or config/settings.yaml). Output goes to output/.
1---2name: decontextualize-text3description: Convert text with private context or internal dependencies into generic, unbiased expressions that are standalone and reusable. Core goal - produce decontextualized text that preserves logic while removing organizational identifiers. Use for project handoff, open-source prep, methodology abstraction, cross-team sharing.4license: MIT5---67# Skill: Decontextualize Text89## Purpose1011Turn content that **depends on private context, implicit assumptions, or environment-specific details** into **generic, reusable wording**. Primary scenario: **project decontextualization** — preparing a project for handoff, open-source, or cross-org use. By removing or replacing specific identifiers (including path strings and file/folder names as they appear in text), the content can be understood correctly in different contexts while protecting organizational privacy.1213---1415## Core Objective1617**Primary Goal**: Produce decontextualized text that preserves core logic and structure while removing all organizational identifiers and private context.1819**Success Criteria** (ALL must be met):20211. ✅ **All sensitive terms replaced**: Company names, project codenames, internal URLs, people's names, path strings, and file/folder names with internal context are identified and replaced with generic equivalents222. ✅ **Core logic preserved**: The essence of what is done and why remains intact; no functional information is lost233. ✅ **Content is standalone**: Text is fully understandable without the original context; implicit assumptions are made explicit or removed244. ✅ **Structure preserved**: Markdown formatting, paragraph structure, logic hierarchy, and functional instructions remain unchanged255. ✅ **No re-identification residue**: Output contains nothing that could re-identify an organization or person (no unique IDs, internal process numbers, non-public terms)2627**Acceptance Test**: Can someone from a different organization understand and use this content without asking clarifying questions about the original context?2829---3031## Use Cases3233- **Project decontextualization**: Prepare a project for handoff or open-source — decontextualize docs, README, comments; replace path strings and file/folder names (as they appear in text) with generic equivalents (e.g. `acme-internal/config.yaml` → `project-root/config.yaml`).34- **Generalization**: Turn project-specific lessons into generic methodology or best practices.35- **Cross-team collaboration**: Remove jargon or codenames that only one team understands so others can read the doc without extra context.36- **De-identification**: Before sharing case studies or blog posts, strip sensitive project names, people, and internal addresses.37- **Release preparation**: Final cleanup before publishing internal content externally (e.g. open source, handoff).38- **Doc sync**: After forking or merging cross-org repos, clean up outdated environment-specific descriptions.3940**When to use**: When you need to remove “understanding barriers due to environment differences” or “information security boundaries.”4142---4344## Behavior4546### Principles4748- Keep **what is done** and **why**.49- Remove **who**, **where**, and **which internal conditions**.50- Replace proper nouns with generic descriptions (e.g. “internal system”, “a given workflow”).51- Make implicit assumptions explicit or drop them.5253### Interaction policy5455- **Uncertain terms**: When you spot possibly sensitive or internal terms (e.g. unclear abbreviations, internal server names), **list them** and ask the user to confirm before rewriting.56- **Alternatives**: For core logic, offer 2–3 rewrite options at different abstraction levels for the user to choose.5758### Steps59601. **Identify sensitive terms**: Scan for company names, project codenames, internal URLs, people’s names, **path strings**, and **file/folder names** that carry internal context (e.g. `acme-internal/`, `team-alpha-output/`).612. **Extract core logic**: Identify the essence of the steps (e.g. “JIRA approval” → “task state change review”).623. **Rewrite generically**: Use neutral wording for the identified parts.634. **Preserve structure**: Keep paragraph structure and capability boundaries; do not drop information.6465---6667## Input & Output6869### Input7071- Text that has one or more of:72 - Organization, company, project, or system names.73 - **Path strings and file/folder names** that carry internal context (e.g. `acme-internal/config.yaml`, `team-alpha/output/`).74 - Internal conventions, implicit context, or default assumptions.75 - Processes or assumptions that only hold in a specific environment.7677### Output7879- **Generic version**: Text with private context removed or replaced.80- **Structure preserved**: Logic hierarchy, Markdown, and functional instructions must be preserved.81- **Reusable**: Output should be usable without extra context.8283---8485## Restrictions8687### Hard Boundaries8889- **No invention**: Do not invent context or capabilities not in the original.90- **No inference**: Do not add facts or conclusions not stated.91- **No new semantics**: Do not introduce new business meaning.92- **No residue**: Do not leave anything that can re-identify an organization or person (e.g. unique IDs, internal process numbers, non-public terms).9394### Skill Boundaries (Avoid Overlap)9596**Do NOT do these (other skills handle them)**:9798- **Documentation generation**: Creating new README files or project documentation from scratch → Use `generate-standard-readme`99- **Content writing**: Writing original content or documentation → Use writing/documentation skills100- **Code refactoring**: Changing code structure or variable names → Use code refactoring skills101- **Translation**: Converting text between human languages → Use translation skills102- **Summarization**: Condensing content while keeping context → Use summarization skills (this skill removes context, not condenses it)103104**When to stop and hand off**:105106- User asks "can you generate a README for this?" → Hand off to `generate-standard-readme`107- User asks "can you write documentation?" → Hand off to documentation writing skills108- User provides code to decontextualize → Focus on comments and strings only; suggest code refactoring skills for identifiers in code structure109- Content is already generic → No decontextualization needed; confirm with user and complete110111---112113## Self-Check114115### Core Success Criteria (ALL must be met)116117- [ ] **All sensitive terms replaced**: Company names, project codenames, internal URLs, people's names, path strings, and file/folder names with internal context are identified and replaced with generic equivalents118- [ ] **Core logic preserved**: The essence of what is done and why remains intact; no functional information is lost119- [ ] **Content is standalone**: Text is fully understandable without the original context; implicit assumptions are made explicit or removed120- [ ] **Structure preserved**: Markdown formatting, paragraph structure, logic hierarchy, and functional instructions remain unchanged121- [ ] **No re-identification residue**: Output contains nothing that could re-identify an organization or person (no unique IDs, internal process numbers, non-public terms)122123### Process Quality Checks124125- [ ] **Uncertain terms confirmed**: When spotting possibly sensitive or internal terms (unclear abbreviations, internal server names), did I list them and ask the user to confirm before rewriting?126- [ ] **Alternatives offered**: For core logic rewrites, did I offer 2-3 rewrite options at different abstraction levels for the user to choose?127- [ ] **No invention**: Did I avoid inventing context or capabilities not in the original?128- [ ] **No inference**: Did I avoid adding facts or conclusions not stated in the original?129130### Acceptance Test131132**Can someone from a different organization understand and use this content without asking clarifying questions about the original context?**133134If NO: Decontextualization is incomplete. Review for remaining context dependencies or unclear generic terms.135136If YES: Decontextualization is complete.137138---139140## Examples141142### Example 1: Internal Process → Generic143144| Original | Decontextualized |145| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |146| In Acme’s JIRA workflow, when a requirement enters “Tech Review”, run X team’s Checklist, then notify PM Li Si. | When a requirement enters the “Tech Review” stage, run the defined Checklist and notify the relevant product owner. |147148### Example 2: System and API → Neutral149150| Original | Decontextualized |151| ------------------------------------------------------------------------ | ------------------------------------------------------------------- |152| Call gpt-4 via our company LLM Gateway (api.acme.internal), timeout 30s. | Call the model via an LLM API; set a reasonable timeout (e.g. 30s). |153154### Example 3: Team-Specific Rule → Abstract155156| Original | Decontextualized |157| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |158| Per Kiro team policy, Python must pass `pylint` with score ≥ 9.0 before merging to `master`. | Per code quality policy, code should pass static checks (e.g. `pylint`) and meet the required threshold before merging to the main branch. |159160### Example 4: Path and File/Folder Names in Docs161162| Original | Decontextualized |163| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |164| Config is in `acme-internal/settings.yaml`. Output goes to `team-alpha/output/`. | Config is in `project-root/settings.yaml` (or `config/settings.yaml`). Output goes to `output/`. |
Run npx skillmds@latest add nesnilnehc/decontextualize-text in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Convert text with private context or internal dependencies into generic, unbiased expressions that are standalone and reusable. Core goal - produce decontextualized text that preserves logic while removing organizational identifiers. Use for project handoff, open-source prep, methodology abstraction, cross-team sharing. It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
nesnilnehc (@nesnilnehc) published this skill. Their other Agent Skills are listed on their SkillMD profile.