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>
11 KiB
Gotchas
Edge cases the system has learned. When in doubt during interactive content-based reorganization, check here first.
Each gotcha follows the format: Pattern → Why it's tricky → Resolution.
Lesson notes for a specific lawyer/doctor/consultant
Pattern: Notes – [레슨] SEO 진단 & 관리 수업 - 양제민 변호사 6회차 (대면).gdoc
or similar lesson-format file referencing a real client by name.
Why tricky: Looks like training material (it IS a lesson note), but it's client-specific (양제민 variant of 오현이혼상속센터 engagement).
Resolution: Belongs in 99_Project Archive/{NN_그_클라이언트}/, NOT in
98_Training/. Training is for generic, reusable content. Client-specific
lesson notes are engagement records.
Quote sheet with D.intelligence Lab- prefix and a client name
Pattern: D.intelligence Lab-SEO Coaching-오현법률사무소-20240612.gsheet
Why tricky: Has both a brand-rebrand candidate (D.intelligence Lab- →
OurDigital-) AND a real client name that should become OOO. But cell
content can't be normalized by filesystem rename.
Resolution:
- Filesystem rename:
OurDigital-SEO Coaching-OOO 견적-20240612.gsheet - Add to a
TODO.mdreminding the user to open the sheet in Google Sheets and replace오현법률사무소and contact info inside cells withOOO/ placeholder text. - Move to
05_Working Template/once both filesystem AND cell content are neutralized. Until then, leaving the file in place with the rename done is a valid intermediate state.
Files at the root that look like they should be in a subfolder
Pattern: A top-level subfolder root contains 30+ loose files plus 0
subfolders. E.g., a screenshots collection directly at the top of
98_Training/.
Why tricky: The script's MOVE_RULES only catches very specific
patterns (Screenshot YYYY-MM-DD…). Manual moves often need judgment —
which subfolder should be created, what should be its name?
Resolution: Interactive content-based mode. Claude reads filenames in
batches, proposes a subfolder name (matching local language convention —
Korean if rest of folder is Korean), confirms with user, then moves with
mv. Update the parent README afterward via our-gdrive-organize --scope index.
Korean vs English filename mixing inside one subfolder
Pattern: 02_SEO Audit Toolkit/ contains both English files
(OurDigital-on-Pages Elements Kit-20250529.gsheet) and Korean subfolders
(참고 자료/, 문서 양식/).
Why tricky: Looks inconsistent at first glance, but is intentional — files use English when they're "OurDigital products" and Korean when they're "Korean-language reference materials."
Resolution: Don't normalize. Language tracks function:
- OurDigital-authored asset → English filename, OurDigital prefix
- External / Korean reference → Korean filename
- Subfolder for grouping Korean references → Korean folder name
Empty subfolders
Pattern: 99_Project Archive/03_소노펠리체CC Local SEO/09_수급 정보/
contains 0 files.
Why tricky: Tempting to delete to "clean up." But empty subfolders often represent reserved engagement phases that the project just didn't reach, or pending document deliveries.
Resolution: Leave empty subfolders alone unless the user explicitly says to clean them up. They don't break anything.
Numbered duplicates: (1), (2) suffixes
Pattern: D.intelligence Lab-SEO Coaching-오현법률사무소-20240612 (1).gsheet
exists alongside the same name without the (1).
Why tricky: Looks like a Drive sync duplicate, but cmp shows different
bytes — they're DIFFERENT Drive documents that happen to have the same name.
Resolution: cmp the two .gsheet stubs. If different (which they
usually are for (N)-suffixed files), preserve both with a suffix like
(v1), (v2), or (legacy). Never overwrite blindly. If actually
identical bytes, ask user which to keep.
_unsorted/ accumulates over time
Pattern: After several --scope move --apply runs, _unsorted/
accumulates .crdownload / .tmp files that the user never went back to.
Why tricky: These are usually legitimate trash but occasionally a real in-progress download.
Resolution: Don't auto-delete. Periodically prompt the user: "Your
_unsorted/ has N files older than 30 days. Want to review?"
A folder that mixes archive + active work
Pattern: A subfolder under 01_Active Workspaces/ contains both
ongoing work AND files from a finished engagement that should have been
archived.
Why tricky: Hard to tell from filenames alone. Need to check mtimes and content (last-modified-recently → active; older + closure-marker docs → should be archived).
Resolution: Interactive mode. Claude reads file mtimes + samples
content, proposes splitting into a new 99_Project Archive/{NN_client}/
entry. User confirms before moving.
D.intelligence vs OurDigital — parent company / child brand
Pattern: Files or folders named D.intelligence …, D intelligence …,
or with the legacy D.intelligence Lab- prefix.
Why tricky: 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. Non-SEO D.intelligence assets (consulting, data, training in other practices) keep the D.intelligence name because they belong to the parent company, not to OurDigital.
Resolution:
- Inside an SEO context (
02_SEO in Action/,00_OurDigital/04_SEO/, or any folder whose name contains "SEO"): apply the standard renameD.intelligence … → OurDigital …. - Outside SEO context: do not rename. Flag for user review and document the asset's intended owning practice.
- The
RENAME_RULESincode/organizer.pycover three variants (D.intelligence Lab-,D.intelligence, and the no-dotD intelligencetypo). The rules don't enforce the SEO-context caveat — that's the caller's responsibility (point the script at an SEO folder, not the whole Drive Stream).
Brand-variant typos that escape the regex
Pattern: A filename uses an off-spec spelling of D.intelligence —
e.g., D intelligence SEO Audit & Treatment.pdf (no dot), or
OurDigitial-… (transposed letters), or Techincal SEO (transposed).
Why tricky: The standard D\.intelligence regex requires the literal
dot, so the no-dot variant slips through. Same for OurDigital typos —
they don't match the brand pattern at all and look like normal filenames.
Resolution:
- When you find one during a manual review, do the rename via
mvand immediately consider whether to add a regex variant toRENAME_RULES. - The current rules cover:
D.intelligence Lab-,D.intelligence, andD intelligence(no-dot, word-boundaries to avoid false positives). - Common typos that are NOT in regex (because they're one-off mistakes):
OurDigitial,Techincal. Catch withmvduring manual review.
Real client names in 예시 자료 모음/
Pattern: Files in 02_…/예시 자료 모음/ that still have real client
names in the filename — e.g., OurDigital-SEO Audit-1gada.com-20240703.xlsx,
OurDigital-Sono International-Preliminary SEO Audit-20240927.gdoc.
Why tricky: The folder's canonical role is "neutralized example
deliverables" — examples to show in pre-sales without exposing real client
data. A file with a real client name in this folder is a half-done
neutralization. The original engagement copy usually exists elsewhere
(99_Project Archive/{NN_client}/ or 04_Case Studies/).
Resolution:
- Filesystem rename to neutralize the FILENAME using
OOO-style placeholders:OurDigital-OOO 호텔 체인-Preliminary SEO Audit-…gdoc. - Add to a
TODO.mdreminding the user to also neutralize CELL CONTENT (real names, contact info, URLs, keyword examples) inside the source Sheet/Doc — filesystem rename doesn't touch cell content. - Don't delete the file even though the original exists elsewhere — the neutralized example serves a different purpose (sales / training) than the archived original (engagement record).
- If the original doesn't exist elsewhere, copy it to the right archive folder FIRST before neutralizing the example.
Near-duplicate templates across 문서 양식/ and 05_Working Template/
Pattern: Same template name in both
02_…/문서 양식/OurDigital-SEO Audit Template-{date1}.gsheet and
05_Working Template/OurDigital-SEO Audit Template-{date2}.gsheet with
different dates (and different Doc IDs).
Why tricky: Looks like the same template at v1 and v2 (good cleanup target — keep the newer, archive the older). But sometimes they're genuinely different templates that just happen to share a name.
Resolution:
cmpthe .gsheet stubs first. Always different (different Doc IDs) for files at different dates — that just confirms they're separate Drive Docs, not bytes-identical stubs.- The Doc IDs alone can't tell you whether the cell content is similar. Open both Sheets in Google Drive. Usually one is a direct refinement of the other (older = v1, newer = v2 with added rows/columns).
- If clearly v1 / v2 of same template: delete v1, OR move v1 to
05_Working Template/with(legacy v1)suffix. - If genuinely different (e.g., one is "quick check" and other is "comprehensive"): rename to disambiguate explicitly.
- Always defer to the user for the open-and-compare step. Add to
TODO.mdwith both Doc IDs + paths so the user knows what to compare.
Stray screenshot that turns out to be a process diagram
Pattern: A Screenshot_YYYY-MM-DD…png in a folder of templates that
the script's MOVE_RULES would normally route to a screenshots/ subdir.
Why tricky: The MOVE_RULES regex (^Screenshot \d{4}-\d{2}-\d{2}…)
treats anything with that prefix as junk to be tucked away. But sometimes
the screenshot is actually a captured workflow diagram, org chart, or
reference visualization that has real value AND a meaningful home elsewhere.
Resolution:
- Always view the screenshot before moving it (use
Readon the .png). - If it's a diagram / reference visualization: rename to a descriptive
filename and move to the most relevant subfolder (often
참고 자료/for audit-toolkit context,docs/for code-related). - If it's an actual junk screenshot (UI snapshot during work): apply the
default rule and move to
screenshots/. - The MOVE_RULES regex pattern uses the macOS default
Screenshot YYYY-MM-DD at HH.MM.SS AM/PM.png(with spaces). The underscore variantScreenshot_YYYY-MM-DD_at_*does NOT match — catch those manually during content review.
Adding new gotchas
When you (Claude) encounter a new ambiguous case during a content-based reorganization session, add an entry here BEFORE moving on. Format:
### Short pattern title
**Pattern**: filename / structure example.
**Why tricky**: what makes this hard.
**Resolution**: what to do.
---
This is how the system gets smarter over time. The patterns library is the institutional memory.