skills/docs/SKILL.md
Read and write documentation — Google Docs via gws CLI and Confluence via confluence CLI. Covers gotchas for both.
npx skillsauth add athal7/dotfiles docsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Two tools depending on where the content lives:
| Signal | Tool |
|---|---|
| .google.com/document URL, Doc ID, user says "Google Doc" | gws |
| *.atlassian.net/wiki URL, page ID, user says "Confluence" or "wiki" | confluence |
Run --help on each tool and subcommand first. This skill covers only what help text won't surface.
gws docs documents get returns raw structural JSON, not readable text — use gws drive files export --mimeType text/plain to get readable content--output paths must be within the current directory — gws rejects absolute paths outside it. Use .scratch/ as the download target: mkdir -p .scratch && gws ... --output .scratch/filename.txt. .scratch/ is globally gitignored.gws drive files list with a CQL q param insteadgws docs documents get output begins with a "Using keyring backend" line — strip non-JSON prefix lines before parsingtables.mdgws slides presentations create creates a blank presentation — use gws drive files copy on an existing themed presentation to inherit its master/theme insteadSimple Light) has no named layouts returned in masters[].layouts via the API, but predefined layouts (TITLE_AND_BODY, TITLE_ONLY, SECTION_HEADER, BIG_NUMBER, BLANK) work via createSlide.slideLayoutReference.predefinedLayoutTITLE and BODY placeholder shapes — insert text into those via insertText and the master handles font, size, and position. Manual text boxes (createShape: TEXT_BOX) bypass the master entirely and require you to hardcode all coordinates in EMUpt → EMU conversion: pt * 12700. Placeholder positions are already set by the layout; you only need coordinates when placing decorative shapes[a-zA-Z0-9_][a-zA-Z0-9_\-:]* — no spacesforegroundColor in updateTextStyle takes {"opaqueColor": {"rgbColor": {...}}}, not {"solidFill": ...}. Page background and shape fills use {"solidFill": {"color": {"rgbColor": {...}}}}alignment in updateParagraphStyle uses START/CENTER/END, not LEFT/RIGHTbatchUpdate request type is createSlide, not addSlidebatchUpdate must succeed or none are applied — validate object IDs and request shape before sendingconfluence find matches by exact title — use confluence search for partial or full-text matchesconfluence search uses CQL — wrap multi-word terms in quotespageId= in older URLs; newer Confluence Cloud URLs embed the ID in the path — confluence read accepts both formsdevelopment
Zoom meeting captions — file locations and format
tools
macOS dictation custom vocabulary — sync knowledge base names and terms to the system spelling dictionary
testing
Look up people, projects, products, and decisions locally first: contact info (email, Slack ID, GitHub handle), titles and teams, project/product status, who works on what, and past decisions. Check before searching Slack, email, calendar, or GitHub — this is the first stop for any contact detail, project context, or decision-history question.
testing
Communication style, audience awareness, and AI-authorship markers for human-facing prose — load when composing chat messages, review comments, merge request descriptions, emails, doc bodies, or ticket descriptions