New Python CLI + dual SKILL.md (Code + Desktop) for organizing Google Drive folders under OurDigital conventions: - Refresh root README index (preserves manual Topics/Notes between AUTO-STRUCTURE markers) - Ensure per-subfolder README.md meta files - Propose filename + folder renames (D.intelligence → OurDigital with SEO-context caveat documented in patterns/gotchas.md) - Propose moves for cluttered files (screenshots, temp downloads) - Sensitive-folder skip list (04_Case Studies, 99_Project Archive, *Archive*, 진단*) - shared/patterns/ gotcha library: canonical-files, canonical-folders, categorization-rules, 12 known gotchas — grows over time as the system encounters new edge cases Slash command: /organize. CLI: ~/.local/bin/our-gdrive-organize. 82-tui-design-template renumbered to 92 (no content change) to free slot 82. AGENTS.md and CLAUDE.md updated for both moves. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
154 lines
5.4 KiB
Markdown
154 lines
5.4 KiB
Markdown
# OurDigital Drive Folder Conventions
|
||
|
||
Canonical reference for naming and organization patterns enforced by
|
||
`our-gdrive-organizer`. The script's rules live in `code/organizer.py` —
|
||
keep this document and that code in sync.
|
||
|
||
For the **gotcha library** (canonical examples + edge cases consulted
|
||
during interactive content-based reorganization), see `patterns/`:
|
||
- `patterns/canonical-files.md`
|
||
- `patterns/canonical-folders.md`
|
||
- `patterns/categorization-rules.md`
|
||
- `patterns/gotchas.md`
|
||
|
||
The brand prefix rules (`D.intelligence …` → `OurDigital …`) now apply to
|
||
folder names too, at depth 2+. Top-level folders (e.g., `00_Brand Management/`)
|
||
are never auto-renamed.
|
||
|
||
## Folder naming
|
||
|
||
### 2nd-level Drive folders (top-level practice areas)
|
||
|
||
`NN_descriptive name`, where NN is a 2-digit numeric prefix indicating the
|
||
"sort bucket":
|
||
|
||
| Range | Meaning |
|
||
|-------|---------|
|
||
| 00–09 | Brand / core / cross-cutting |
|
||
| 10–19 | Product or specialty practice |
|
||
| 20–29 | Data / integrations |
|
||
| 90–99 | Archive |
|
||
|
||
Examples observed: `00_OurDigital`, `01_Brand in Action`, `02_SEO in Action`,
|
||
`10_OurSEO Agent`, `20_DataForSEO`, `99_Project Archive`.
|
||
|
||
### 3rd-level subfolders
|
||
|
||
`NN_descriptive name` again, scoped to the parent. Maturity ordering:
|
||
|
||
| Range | Meaning |
|
||
|-------|---------|
|
||
| 00–05 | Frameworks / always-on assets |
|
||
| 10–13 | Productized tooling / specialty modules |
|
||
| 20 | Data |
|
||
| 90+ | Archive within this practice |
|
||
|
||
### Client / project subfolders
|
||
|
||
Inside `01_Active Workspaces/` or `99_Project Archive/`:
|
||
|
||
`NN_{client name}` — e.g., `00_Jamie Clinic`, `04_오현이혼상속센터`,
|
||
`05_1가다`. NN is assigned in chronological / engagement order.
|
||
|
||
### Reserved / system subfolders
|
||
|
||
- `screenshots/` — auto-created by the organizer when moving stray screenshot
|
||
files out of a parent folder root.
|
||
- `_unsorted/` — auto-created by the organizer for incomplete downloads
|
||
(`.crdownload`, `.tmp`, `.partial`).
|
||
|
||
## File naming
|
||
|
||
### Templates and quotes (in `05_Working Template/`)
|
||
|
||
`OurDigital-{Service}-OOO {date}.{ext}` or
|
||
`OurDigital-{Service}-OOOOOO {modifier}.{ext}`.
|
||
|
||
`OOO` and `OOOOOO` are the canonical placeholder strings for "client name
|
||
goes here" — chosen to be visually obvious and easy to grep for. Use
|
||
whichever makes more visual sense in the filename.
|
||
|
||
Examples:
|
||
- `OurDigital-SEO Coaching-OOO 견적-20240612.gsheet`
|
||
- `OurDigital-SEO Treatment-OOO 호텔 견적-20240903.gsheet`
|
||
- `OurDigital-OOO 호텔 SEO Basic 패키지-20250416.gsheet`
|
||
- `OurDigital-Data Access & Management Agreement - 2026.gsheet`
|
||
|
||
### Brand prefix — parent company / SEO child brand
|
||
|
||
D.intelligence is the **parent company**; OurDigital is its **SEO-specialty
|
||
child brand**. The rebrand-to-OurDigital rule only applies when the asset
|
||
is SEO-related.
|
||
|
||
Rules (filesystem rename only — does not touch cell/body content):
|
||
|
||
- `D.intelligence Lab-` → `OurDigital-`
|
||
- `D.intelligence` (anywhere) → `OurDigital`
|
||
- `D intelligence` (no-dot variant) → `OurDigital`
|
||
|
||
The organizer applies these to both files and folders at depth 2+. Top-level
|
||
folders (`NN_…`) are never auto-renamed.
|
||
|
||
**Important**: The script doesn't enforce the SEO-context caveat. When you
|
||
point the organizer at the whole Drive Stream or a non-SEO folder, it will
|
||
rename ALL D.intelligence references — which is wrong outside SEO context.
|
||
Only run the organizer on SEO folders (`02_SEO in Action/`,
|
||
`00_OurDigital/04_SEO/`, etc.). For non-SEO D.intelligence assets, do not
|
||
rename — they belong to the parent company.
|
||
|
||
See `patterns/gotchas.md` "D.intelligence vs OurDigital" for full guidance.
|
||
|
||
### Archive client files
|
||
|
||
Files inside `99_Project Archive/{client}/` should KEEP their original
|
||
filenames including real client names. The script skips these folders for
|
||
rename/move operations.
|
||
|
||
### Date stamps
|
||
|
||
Use `YYYYMMDD` (no separator) when embedding a date in a filename:
|
||
`OurDigital-Data Access & Management Agreement - 2026.gsheet`
|
||
`OurDigital-SEO Coaching-OOO 견적-20240612.gsheet`
|
||
|
||
When a date range is needed: `YYYYMMDD-YYYYMMDD`.
|
||
|
||
### Extensions and stub files
|
||
|
||
Google Drive Apps formats appear as 180-byte JSON stubs on the local
|
||
filesystem with these extensions:
|
||
|
||
| Drive type | Extension |
|
||
|-----------|-----------|
|
||
| Docs | `.gdoc` |
|
||
| Sheets | `.gsheet` |
|
||
| Slides | `.gslides`|
|
||
| Forms | `.gform` |
|
||
|
||
Renaming the stub on the filesystem only changes the local filename — the
|
||
backing Google document, its Doc ID, sharing links, and revision history are
|
||
untouched. Safe to rename. Cell-level / body-level changes still require
|
||
opening the file in the corresponding Google app.
|
||
|
||
## What the organizer does NOT enforce
|
||
|
||
- Cell content inside `.gsheet`, body content inside `.gdoc`, slide content
|
||
inside `.gslides`, or any binary file (`.pdf`, `.pptx`, `.xlsx`). Those need
|
||
manual editing in the source app. Track them with a `TODO.md` if needed
|
||
(see `02_SEO in Action/98_Training/TODO.md` for an example pattern).
|
||
- Folder maturity ordering — the NN prefix system is a convention, but the
|
||
script doesn't reorder or renumber folders.
|
||
- Per-folder `README.md` content beyond the AUTO-STRUCTURE block — manual
|
||
Topics / Notes sections are preserved.
|
||
|
||
## Sensitive folders (never auto-modified)
|
||
|
||
Internal regex list (`SENSITIVE_SUBFOLDER_PATTERNS` in `organizer.py`):
|
||
|
||
- `^04_Case Studies$`
|
||
- `^99_Project Archive$`
|
||
- `.*Archive$` (case-insensitive)
|
||
- `^진단.*$`
|
||
|
||
These folders are still indexed (counts appear in the README structure),
|
||
but no files inside them are renamed or moved.
|