[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HXC8AFS4ZJK7QPZ0MJHTJ9":3,"skill-same:01M6HXC8AFS4ZJK7QPZ0MJHTJ9":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6HXC8AFS4ZJK7QPZ0MJHTJ9","safe-css-append",null,"Safely append CSS styles from one file to another by identifying missing rules, adapting CSS variables, and verifying changes","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",8029,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Fsafe-css-append\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34],"css","safe","append","safe css append","file","Rules","missing","css variables","styles","Variables","changes","2026-11-10 10:12:30",false,"---\nname: safe-css-append\ndescription: Safely append CSS styles from one file to another by identifying missing rules, adapting CSS variables, and verifying changes\n---\n\n# Safe CSS Append Workflow\n\nThis skill provides a systematic approach for safely appending CSS styles from a source file to a destination file. The workflow ensures no content is overwritten, CSS variables are properly adapted, and all changes are verified.\n\n## When to Use This Skill\n\n- Migrating styles between projects\n- Copying component styles while preserving existing rules\n- Adding new CSS rules without duplicating or conflicting with existing styles\n- Adapting styles to use a different set of CSS variables\n\n## Workflow Steps\n\n### 1. Read and Analyze Source CSS\n\nFirst, examine the source CSS file to identify the selectors and rules you want to transfer:\n\n```bash\n# Read the source CSS file\ncat \u002Fpath\u002Fto\u002Fsource\u002Fstyles.css\n\n# Identify specific selectors if needed\ngrep \"selector-pattern\" \u002Fpath\u002Fto\u002Fsource\u002Fstyles.css\n```\n\n**Document:**\n- Target selectors (e.g., `.panel-tab`, `.header-nav`)\n- CSS variables used (e.g., `--primary-color`, `--spacing-unit`)\n- Complete rule sets for each selector\n\n### 2. Read and Check Destination CSS\n\nExamine the destination file to understand existing rules and avoid duplication:\n\n```bash\n# Read the destination CSS file\ncat \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check if specific selectors already exist\ngrep \"selector-name\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check for existing CSS variables\ngrep \"^[[:space:]]*--\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css | head -20\n```\n\n**Identify:**\n- Existing selectors that might conflict\n- CSS variable naming conventions in the destination\n- Any existing rules for the target selectors\n\n### 3. Identify Missing Styles and Required Adaptations\n\nCompare source and destination to determine:\n- Which selectors are completely missing\n- Which properties are missing from existing selectors\n- How CSS variables need to be mapped (source → destination)\n\n**Example variable mapping:**\n```\nSource: --panel-bg → Destination: --background-secondary\nSource: --text-primary → Destination: --color-text-primary\nSource: --border-radius → Keep as-is (if already defined in destination)\n```\n\n### 4. Prepare Adapted CSS Content\n\nCreate the CSS content to append, adapting variables as needed:\n\n```css\n\u002F* Example adapted CSS *\u002F\n.new-selector {\n    background-color: var(--background-secondary);  \u002F* was --panel-bg *\u002F\n    color: var(--color-text-primary);               \u002F* was --text-primary *\u002F\n    border-radius: var(--border-radius);            \u002F* unchanged *\u002F\n    padding: 8px 16px;\n}\n\n.existing-selector {\n    \u002F* Only add missing properties, not the entire rule *\u002F\n    new-property: value;\n}\n```\n\n### 5. Safely Append to Destination\n\nUse append operations (never overwrite) to add the new styles:\n\n```bash\n# Append new CSS rules\ncat >> \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css \u003C\u003C 'EOF'\n\n\u002F* Added styles from source project *\u002F\n.selector-name {\n    property: value;\n    variable-property: var(--adapted-variable);\n}\nEOF\n```\n\n**Best practices:**\n- Add a comment indicating the source or purpose\n- Include a blank line before the new content for readability\n- Use `>>` (append) never `>` (overwrite)\n\n### 6. Verify the Changes\n\nConfirm that the styles were added correctly:\n\n```bash\n# View the last N lines to see appended content\ntail -n 20 \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Verify specific selectors were added\ngrep \"new-selector-name\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check the complete file if needed\ncat \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css | tail -n 50\n```\n\n## Complete Example\n\nHere's a full example workflow:\n\n```bash\n# 1. Read source CSS and identify target\ncat project-a\u002Fcomponents.css | grep -A 10 \".button-primary\"\n\n# 2. Check destination for conflicts\ngrep \".button-primary\" project-b\u002Fmain.css\ngrep \"^[[:space:]]*--btn-\" project-b\u002Fmain.css\n\n# 3. Identify that .button-primary is missing, and variables need mapping:\n#    --btn-color → --primary-color (exists in destination)\n#    --btn-padding → create inline value\n\n# 4. Append adapted styles\ncat >> project-b\u002Fmain.css \u003C\u003C 'EOF'\n\n\u002F* Button styles from project-a *\u002F\n.button-primary {\n    background-color: var(--primary-color);\n    padding: 10px 20px;\n    border-radius: 4px;\n    font-weight: 600;\n}\nEOF\n\n# 5. Verify\ntail -n 10 project-b\u002Fmain.css\ngrep \".button-primary\" project-b\u002Fmain.css\n```\n\n## Safety Checklist\n\n- [ ] Source file read and analyzed\n- [ ] Destination file checked for existing rules\n- [ ] Missing styles identified\n- [ ] CSS variables mapped correctly\n- [ ] Append operation used (not overwrite)\n- [ ] Changes verified with tail\u002Fgrep\n- [ ] No duplicate selectors created\n- [ ] All variable references exist in destination\n\n## Common Pitfalls\n\n1. **Overwriting instead of appending**: Always use `>>`, never `>`\n2. **Variable mismatch**: Ensure all CSS variables exist in the destination or are properly defined\n3. **Duplicate selectors**: Check for existing rules before adding complete selector blocks\n4. **Missing verification**: Always verify changes after appending\n\n## Tips\n\n- Use `wc -l` before and after to confirm lines were added\n- Keep a mapping document for complex variable transformations\n- Consider using a temporary file to preview changes before appending\n- Group related selectors together when appending multiple rules","# Safe CSS Append Workflow\n\nThis skill provides a systematic approach for safely appending CSS styles from a source file to a destination file. The workflow ensures no content is overwritten, CSS variables are properly adapted, and all changes are verified.\n\n## When to Use This Skill\n\n- Migrating styles between projects\n- Copying component styles while preserving existing rules\n- Adding new CSS rules without duplicating or conflicting with existing styles\n- Adapting styles to use a different set of CSS variables\n\n## Workflow Steps\n\n### 1. Read and Analyze Source CSS\n\nFirst, examine the source CSS file to identify the selectors and rules you want to transfer:\n\n```bash\n# Read the source CSS file\ncat \u002Fpath\u002Fto\u002Fsource\u002Fstyles.css\n\n# Identify specific selectors if needed\ngrep \"selector-pattern\" \u002Fpath\u002Fto\u002Fsource\u002Fstyles.css\n```\n\n**Document:**\n- Target selectors (e.g., `.panel-tab`, `.header-nav`)\n- CSS variables used (e.g., `--primary-color`, `--spacing-unit`)\n- Complete rule sets for each selector\n\n### 2. Read and Check Destination CSS\n\nExamine the destination file to understand existing rules and avoid duplication:\n\n```bash\n# Read the destination CSS file\ncat \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check if specific selectors already exist\ngrep \"selector-name\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check for existing CSS variables\ngrep \"^[[:space:]]*--\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css | head -20\n```\n\n**Identify:**\n- Existing selectors that might conflict\n- CSS variable naming conventions in the destination\n- Any existing rules for the target selectors\n\n### 3. Identify Missing Styles and Required Adaptations\n\nCompare source and destination to determine:\n- Which selectors are completely missing\n- Which properties are missing from existing selectors\n- How CSS variables need to be mapped (source → destination)\n\n**Example variable mapping:**\n```\nSource: --panel-bg → Destination: --background-secondary\nSource: --text-primary → Destination: --color-text-primary\nSource: --border-radius → Keep as-is (if already defined in destination)\n```\n\n### 4. Prepare Adapted CSS Content\n\nCreate the CSS content to append, adapting variables as needed:\n\n```css\n\u002F* Example adapted CSS *\u002F\n.new-selector {\n    background-color: var(--background-secondary);  \u002F* was --panel-bg *\u002F\n    color: var(--color-text-primary);               \u002F* was --text-primary *\u002F\n    border-radius: var(--border-radius);            \u002F* unchanged *\u002F\n    padding: 8px 16px;\n}\n\n.existing-selector {\n    \u002F* Only add missing properties, not the entire rule *\u002F\n    new-property: value;\n}\n```\n\n### 5. Safely Append to Destination\n\nUse append operations (never overwrite) to add the new styles:\n\n```bash\n# Append new CSS rules\ncat >> \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css \u003C\u003C 'EOF'\n\n\u002F* Added styles from source project *\u002F\n.selector-name {\n    property: value;\n    variable-property: var(--adapted-variable);\n}\nEOF\n```\n\n**Best practices:**\n- Add a comment indicating the source or purpose\n- Include a blank line before the new content for readability\n- Use `>>` (append) never `>` (overwrite)\n\n### 6. Verify the Changes\n\nConfirm that the styles were added correctly:\n\n```bash\n# View the last N lines to see appended content\ntail -n 20 \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Verify specific selectors were added\ngrep \"new-selector-name\" \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css\n\n# Check the complete file if needed\ncat \u002Fpath\u002Fto\u002Fdestination\u002Fstyles.css | tail -n 50\n```\n\n## Complete Example\n\nHere's a full example workflow:\n\n```bash\n# 1. Read source CSS and identify target\ncat project-a\u002Fcomponents.css | grep -A 10 \".button-primary\"\n\n# 2. Check destination for conflicts\ngrep \".button-primary\" project-b\u002Fmain.css\ngrep \"^[[:space:]]*--btn-\" project-b\u002Fmain.css\n\n# 3. Identify that .button-primary is missing, and variables need mapping:\n#    --btn-color → --primary-color (exists in destination)\n#    --btn-padding → create inline value\n\n# 4. Append adapted styles\ncat >> project-b\u002Fmain.css \u003C\u003C 'EOF'\n\n\u002F* Button styles from project-a *\u002F\n.button-primary {\n    background-color: var(--primary-color);\n    padding: 10px 20px;\n    border-radius: 4px;\n    font-weight: 600;\n}\nEOF\n\n# 5. Verify\ntail -n 10 project-b\u002Fmain.css\ngrep \".button-primary\" project-b\u002Fmain.css\n```\n\n## Safety Checklist\n\n- [ ] Source file read and analyzed\n- [ ] Destination file checked for existing rules\n- [ ] Missing styles identified\n- [ ] CSS variables mapped correctly\n- [ ] Append operation used (not overwrite)\n- [ ] Changes verified with tail\u002Fgrep\n- [ ] No duplicate selectors created\n- [ ] All variable references exist in destination\n\n## Common Pitfalls\n\n1. **Overwriting instead of appending**: Always use `>>`, never `>`\n2. **Variable mismatch**: Ensure all CSS variables exist in the destination or are properly defined\n3. **Duplicate selectors**: Check for existing rules before adding complete selector blocks\n4. **Missing verification**: Always verify changes after appending\n\n## Tips\n\n- Use `wc -l` before and after to confirm lines were added\n- Keep a mapping document for complex variable transformations\n- Consider using a temporary file to preview changes before appending\n- Group related selectors together when appending multiple rules",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Fsafe-css-append",944,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-12 22:26:39",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add HKUDS\u002FAgentPilot --skill safe-css-append",{"tool":54,"command":55},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill safe-css-append",{"tool":57,"command":58},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill safe-css-append","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Fsafe-css-append\u002FSKILL.md",true,[62],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},".skill_id","OTHER","其他",29,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Fsafe-css-append\u002F.skill_id",[69,88,106,129,153,175],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":35},"01M6HYB297NDABRERJRVG0K8R0","agentpilot","Set up AgentPilot and use its single entry to prepare missing inputs and run configured RSI experiments. Use when the user requests AgentPilot installation or work with AgentPilot.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fplugins\u002Fagentpilot\u002Fskills\u002Fagentpilot\u002FSKILL.md",[],[71,76,77,78,30,79,80,81,82,83,84,85,86,87],"prepare","requests","with","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":35},"01M6HYAYWXTTE1J7DJM0MFNQ4H","remember","Review auto-memory entries and propose promotions to OPENSPACE.md, OPENSPACE.local.md, or retained auto-memory topics; detect duplicates, stale facts, conflicts, and ambiguous entries before making changes.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fskills\u002Fremember\u002FSKILL.md",[],[90,95,96,97,98,34,99,100,101,102,103,104,105],"memory","review","auto","openspace","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":35},"01M6HYAVMPM4SBDV60R2B5HPV8","skill-discovery","Search reusable OpenSpace skills locally, and browse cloud packages step by step when a cloud skill may help. Reusing proven skills saves tokens, improves reliability, and extends your capabilities beyond built-in tools.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fskill-discovery\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[116,117,118,98,119,120,121,122,123,124,125,126,127,128],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":35},"01M6HYAR811B3RB0M50RBEDGN6","delegate-task","Delegate tasks to OpenSpace — a full-stack autonomous worker for coding, DevOps, web research, and desktop automation, backed by an extensive MCP tool and skill library. Skills auto-improve through use, reducing token consumption over time. A cloud community lets agents share and collectively evolve reusable skills.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fdelegate-task\u002FSKILL.md",[135],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},[137,138,139,98,140,141,142,143,144,118,97,82,145,146,147,148,149,150,151,152],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":35},"01M6HYAM9FSGV6E52AYENDQXYH","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[160,161,162,163,164,165,166,167,28,168,169,170,171,172,148,173,174],"write special chars ts check","write","check","type","files","filters","only","template","python","typescript","output","Existing","type-checking","errors","script",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":35},"01M6HYAH05HGV7SVWSVR8PJRQD","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[182,183,161,78,148,174,184,185,186,187,188,167,28,189,190,168],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]