← JuicyLucy AdsCONTENT HISTORY

Update to JuicyLucy Ads

Snapshot Oct 24, 2026 · 13:24 UTC · version 0.33.2

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for juicylucy

Full description — Now says: file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each.

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save JuicyLucy Ads and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Full description

Before

Sep 30, 2026 · 23:16 UTC

copy of this skill in your own skill folder replaces them.

After

Oct 24, 2026 · 13:24 UTC

file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each.

Skill instructions

Before

Sep 30, 2026 · 23:16 UTC

copy of this skill in your own skill folder replaces them. Brand facts live in the brand-* skills, not here." and an ad-set folder carries a number nothing else in the campaign uses. They are also yours to change — see § Making them your...

After

Oct 24, 2026 · 13:24 UTC

file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here." and an ad-set folder carries a number nothing else in the campaign uses. A team or a user ...

Supporting files

Before

Sep 30, 2026 · 23:16 UTC

[{"relative_path":"README.md","size_in_bytes":1083},{"relative_path":"allocation.json","size_in_bytes":1793},{"relative_path":"evidence.json","size_in_bytes":2190},{"relative_path":"foldering.json","size_in_bytes":2176},{"relative_path":...

After

Oct 24, 2026 · 13:24 UTC

[{"relative_path":"README.md","size_in_bytes":1013},{"relative_path":"allocation.json","size_in_bytes":1793},{"relative_path":"evidence.json","size_in_bytes":2190},{"relative_path":"foldering.json","size_in_bytes":2176},{"relative_path":...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -1,6 +1,6 @@
 ---
 name: juicylucy
-description: "The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a copy of this skill in your own skill folder replaces them. Brand facts live in the brand-* skills, not here."
+description: "The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here."
 ---
 
 # Workspace conventions
@@ -13,8 +13,28 @@
 
 These are the **defaults the plugin ships**. They are a complete, working set:
 an export named under them traces back to its creative, market and version,
-and an ad-set folder carries a number nothing else in the campaign uses. They
-are also yours to change — see § Making them your own.
+and an ad-set folder carries a number nothing else in the campaign uses. A
+team or a user with a grammar of their own keeps it in a conventions folder on
+the Mac, which replaces these file by file — see § Which copy to read.
+
+## Which copy to read
+
+**Before reading any of the files below, check whether this Mac has its own.**
+A file of the same name in **`~/.juicylucy/conventions/`** replaces the one
+here — that folder is how a team keeps the grammar its uploader expects, or
+how a user adopts their own. Each file stands alone: a folder holding only
+`languages.json` changes the language codes and nothing else. The `ad-naming`
+tool's `where` command lists which copy of every file is in effect:
+
+```bash
+~/.juicylucy/bin/adsnode <SKILLS_DIR>/ad-naming/scripts/naming.mjs where
+```
+
+(`<SKILLS_DIR>` is the directory that holds the installed skills — this
+skill's parent.) Read each file from the path it gives under `files`. The tool
+names files and folders from the same copies, and while any of them is local
+it says so on every call — repeat that to the user once, so nobody mistakes a
+local grammar for the plugin's.
 
 ## What each file owns
 
@@ -52,18 +72,17 @@
 
 ## Making them your own
 
-Codex reads a copy of this skill in `~/.agents/skills/juicylucy/` (or in a
-folder's `.agents/skills/`, while working there) **in place of** the shipped
-one — the whole skill, not a merge. The `ad-naming` tool resolves these files
-in the same order, so a local copy changes the filenames and folders the tool
-produces, and it prints a note on every call while that is so; its `where`
-command shows which files it is reading.
-
-To adopt your own grammar: copy this directory to `~/.agents/skills/juicylucy/`,
-change the values, keep every filename and every key — the tool reads the
-keys — and start a new session. If an upload automation of yours parses
-filenames, its grammar is the one to put in `naming.json`. The setup skill's
-`references/extending.md` § Changing the conventions is the flow.
+To adopt your own grammar: copy the file to change from this directory into
+`~/.juicylucy/conventions/`, change the values, and keep the filename and every
+key — the tool reads the keys. Nothing needs restarting; the next call reads
+it. If an upload automation of yours parses filenames or ad-set names, its
+grammar is the one to put in `naming.json` and `foldering.json`. The setup
+skill's `references/extending.md` § Changing the conventions is the flow.
+
+A copy of this whole skill in `~/.agents/skills/juicylucy/` (or a folder's
+`.agents/skills/`) also still changes what is read, below the conventions
+folder, but it is not the way to do it: it replaces the skill's text along
+with its values, and stops receiving the plugin's updates to either.
 
 ## What does not belong here
 
Full technical diff · 3 changed fields

changed /description

BEFORE
"The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a copy of this skill in your own skill folder replaces them. Brand facts live in the brand-* skills, not here."
AFTER
"The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here."

changed /included_files

BEFORE
[
  {
    "relative_path": "README.md",
    "size_in_bytes": 1083
  },
  {
    "relative_path": "allocation.json",
    "size_in_bytes": 1793
  },
  {
    "relative_path": "evidence.json",
    "size_in_bytes": 2190
  },
  {
    "relative_path": "foldering.json",
    "size_in_bytes": 2176
  },
  {
    "relative_path": "languages.json",
    "size_in_bytes": 5103
  },
  {
    "relative_path": "naming.json",
    "size_in_bytes": 2549
  },
  {
    "relative_path": "references/allocation.md",
    "size_in_bytes": 1856
  },
  {
    "relative_path": "references/evidence.md",
    "size_in_bytes": 1815
  },
  {
    "relative_path": "references/foldering.md",
    "size_in_bytes": 3331
  },
  {
    "relative_path": "references/naming.md",
    "size_in_bytes": 3002
  }
]
AFTER
[
  {
    "relative_path": "README.md",
    "size_in_bytes": 1013
  },
  {
    "relative_path": "allocation.json",
    "size_in_bytes": 1793
  },
  {
    "relative_path": "evidence.json",
    "size_in_bytes": 2190
  },
  {
    "relative_path": "foldering.json",
    "size_in_bytes": 2176
  },
  {
    "relative_path": "languages.json",
    "size_in_bytes": 5157
  },
  {
    "relative_path": "naming.json",
    "size_in_bytes": 2569
  },
  {
    "relative_path": "references/allocation.md",
    "size_in_bytes": 2067
  },
  {
    "relative_path": "references/evidence.md",
    "size_in_bytes": 1815
  },
  {
    "relative_path": "references/foldering.md",
    "size_in_bytes": 4372
  },
  {
    "relative_path": "references/naming.md",
    "size_in_bytes": 3453
  }
]

changed /skill_md_contents

BEFORE
"---\nname: juicylucy\ndescription: \"The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a copy of this skill in your own skill folder replaces them. Brand facts live in the brand-* skills, not here.\"\n---\n\n# Workspace conventions\n\nEverything true of how ads are filed, named, allocated, and evidenced — for\nany brand — stated exactly once, as data. Engine skills and tooling read these\nfiles rather than restating them. If you are following a skill that points\nhere and you cannot read these files, **stop and ask** rather than working\nfrom memory: a convention recalled is a convention forked.\n\nThese are the **defaults the plugin ships**. They are a complete, working set:\nan export named under them traces back to its creative, market and version,\nand an ad-set folder carries a number nothing else in the campaign uses. They\nare also yours to change — see § Making them your own.\n\n## What each file owns\n\n| Read | For |\n| --- | --- |\n| [`naming.json`](naming.json) | **The** export filename grammar: the token pattern, per-medium constants (author, format, style vocabularies), funnel stages, the localization inheritance rule. |\n| [`foldering.json`](foldering.json) | **The** ad-set folder grammar: the hierarchy, the token pattern, and the global `#0000` sequence discipline shared across mediums. |\n| [`allocation.json`](allocation.json) | How languages and ad sets are allocated across active campaigns, and how candidates are ranked and excluded. |\n| [`languages.json`](languages.json) | The language table: names, codes, scripts, direction, per-language rendering notes. |\n| [`evidence.json`](evidence.json) | What counts as a final ad, the asset acceptance gate, the `.qa/` package, `PROJECT_STATE.md` conventions, contact-sheet spec. |\n\nProducing a filename, a folder name or a sequence number from this data is the\n`ad-naming` skill's job (`naming.mjs`), for both mediums; nothing here is typed\ninto a name by hand.\n\nThe [`references/`](references/) files carry the prose behind the data — the\nprocedures, worked examples, and checklists. The JSON is authoritative for\nvalues; the references are authoritative for method.\n\n## The discipline the data assumes\n\nFour rules repeat through every convention here, and every consumer is held to\nthem:\n\n1. **Reserve before you write.** Names and numbers are resolved collision-free\n   against the live filesystem before any output is moved into place — never\n   after, and never from memory or a tracker.\n2. **Re-scan immediately before creating.** A reservation made earlier in a\n   session may have been claimed; the scan that counts is the one just before\n   `mkdir` or the final move.\n3. **Rename what the change invalidates.** A folder's `N Ads` token states its\n   actual count; redistribution that changes the count renames the folder.\n4. **The filesystem is authoritative.** Chat updates, trackers, and manifests\n   may lag; direct listings, counts, and hashes settle every disagreement.\n\n## Making them your own\n\nCodex reads a copy of this skill in `~/.agents/skills/juicylucy/` (or in a\nfolder's `.agents/skills/`, while working there) **in place of** the shipped\none — the whole skill, not a merge. The `ad-naming` tool resolves these files\nin the same order, so a local copy changes the filenames and folders the tool\nproduces, and it prints a note on every call while that is so; its `where`\ncommand shows which files it is reading.\n\nTo adopt your own grammar: copy this directory to `~/.agents/skills/juicylucy/`,\nchange the values, keep every filename and every key — the tool reads the\nkeys — and start a new session. If an upload automation of yours parses\nfilenames, its grammar is the one to put in `naming.json`. The setup skill's\n`references/extending.md` § Changing the conventions is the flow.\n\n## What does not belong here\n\nAnything true of one brand only — product scope, compliance rules, brand\nassets, competitor sets, account names — lives in that brand's `brand-*`\nskill. Anything true of one production batch only — dates, chosen languages,\nledgers — lives with the run, laid out per `evidence.json`.\n"
AFTER
"---\nname: juicylucy\ndescription: \"The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here.\"\n---\n\n# Workspace conventions\n\nEverything true of how ads are filed, named, allocated, and evidenced — for\nany brand — stated exactly once, as data. Engine skills and tooling read these\nfiles rather than restating them. If you are following a skill that points\nhere and you cannot read these files, **stop and ask** rather than working\nfrom memory: a convention recalled is a convention forked.\n\nThese are the **defaults the plugin ships**. They are a complete, working set:\nan export named under them traces back to its creative, market and version,\nand an ad-set folder carries a number nothing else in the campaign uses. A\nteam or a user with a grammar of their own keeps it in a conventions folder on\nthe Mac, which replaces these file by file — see § Which copy to read.\n\n## Which copy to read\n\n**Before reading any of the files below, check whether this Mac has its own.**\nA file of the same name in **`~/.juicylucy/conventions/`** replaces the one\nhere — that folder is how a team keeps the grammar its uploader expects, or\nhow a user adopts their own. Each file stands alone: a folder holding only\n`languages.json` changes the language codes and nothing else. The `ad-naming`\ntool's `where` command lists which copy of every file is in effect:\n\n```bash\n~/.juicylucy/bin/adsnode <SKILLS_DIR>/ad-naming/scripts/naming.mjs where\n```\n\n(`<SKILLS_DIR>` is the directory that holds the installed skills — this\nskill's parent.) Read each file from the path it gives under `files`. The tool\nnames files and folders from the same copies, and while any of them is local\nit says so on every call — repeat that to the user once, so nobody mistakes a\nlocal grammar for the plugin's.\n\n## What each file owns\n\n| Read | For |\n| --- | --- |\n| [`naming.json`](naming.json) | **The** export filename grammar: the token pattern, per-medium constants (author, format, style vocabularies), funnel stages, the localization inheritance rule. |\n| [`foldering.json`](foldering.json) | **The** ad-set folder grammar: the hierarchy, the token pattern, and the global `#0000` sequence discipline shared across mediums. |\n| [`allocation.json`](allocation.json) | How languages and ad sets are allocated across active campaigns, and how candidates are ranked and excluded. |\n| [`languages.json`](languages.json) | The language table: names, codes, scripts, direction, per-language rendering notes. |\n| [`evidence.json`](evidence.json) | What counts as a final ad, the asset acceptance gate, the `.qa/` package, `PROJECT_STATE.md` conventions, contact-sheet spec. |\n\nProducing a filename, a folder name or a sequence number from this data is the\n`ad-naming` skill's job (`naming.mjs`), for both mediums; nothing here is typed\ninto a name by hand.\n\nThe [`references/`](references/) files carry the prose behind the data — the\nprocedures, worked examples, and checklists. The JSON is authoritative for\nvalues; the references are authoritative for method.\n\n## The discipline the data assumes\n\nFour rules repeat through every convention here, and every consumer is held to\nthem:\n\n1. **Reserve before you write.** Names and numbers are resolved collision-free\n   against the live filesystem before any output is moved into place — never\n   after, and never from memory or a tracker.\n2. **Re-scan immediately before creating.** A reservation made earlier in a\n   session may have been claimed; the scan that counts is the one just before\n   `mkdir` or the final move.\n3. **Rename what the change invalidates.** A folder's `N Ads` token states its\n   actual count; redistribution that changes the count renames the folder.\n4. **The filesystem is authoritative.** Chat updates, trackers, and manifests\n   may lag; direct listings, counts, and hashes settle every disagreement.\n\n## Making them your own\n\nTo adopt your own grammar: copy the file to change from this directory into\n`~/.juicylucy/conventions/`, change the values, and keep the filename and every\nkey — the tool reads the keys. Nothing needs restarting; the next call reads\nit. If an upload automation of yours parses filenames or ad-set names, its\ngrammar is the one to put in `naming.json` and `foldering.json`. The setup\nskill's `references/extending.md` § Changing the conventions is the flow.\n\nA copy of this whole skill in `~/.agents/skills/juicylucy/` (or a folder's\n`.agents/skills/`) also still changes what is read, below the conventions\nfolder, but it is not the way to do it: it replaces the skill's text along\nwith its values, and stops receiving the plugin's updates to either.\n\n## What does not belong here\n\nAnything true of one brand only — product scope, compliance rules, brand\nassets, competitor sets, account names — lives in that brand's `brand-*`\nskill. Anything true of one production batch only — dates, chosen languages,\nledgers — lives with the run, laid out per `evidence.json`.\n"
Full snapshot data
{
  "description": "The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here.",
  "included_files": [
    {
      "relative_path": "README.md",
      "size_in_bytes": 1013
    },
    {
      "relative_path": "allocation.json",
      "size_in_bytes": 1793
    },
    {
      "relative_path": "evidence.json",
      "size_in_bytes": 2190
    },
    {
      "relative_path": "foldering.json",
      "size_in_bytes": 2176
    },
    {
      "relative_path": "languages.json",
      "size_in_bytes": 5157
    },
    {
      "relative_path": "naming.json",
      "size_in_bytes": 2569
    },
    {
      "relative_path": "references/allocation.md",
      "size_in_bytes": 2067
    },
    {
      "relative_path": "references/evidence.md",
      "size_in_bytes": 1815
    },
    {
      "relative_path": "references/foldering.md",
      "size_in_bytes": 4372
    },
    {
      "relative_path": "references/naming.md",
      "size_in_bytes": 3453
    }
  ],
  "name": "juicylucy",
  "skill_md_contents": "---\nname: juicylucy\ndescription: \"The conventions this plugin names and files ads by — the export filename token grammar, the ad-set folder grammar and global #0000 sequence, language codes and scripts, allocation policy, and the evidence/QA layout. Load whenever languages are being selected or allocated for a batch, whenever an ad file or ad-set folder is being verified against the conventions, or whenever a skill refers to the workspace conventions. Filenames and sequence numbers are produced by the ad-naming skill's tool, which reads these files: this skill is the data, not the tool. These are defaults; a file of the same name in the local conventions folder (~/.juicylucy/conventions) replaces each. Brand facts live in the brand-* skills, not here.\"\n---\n\n# Workspace conventions\n\nEverything true of how ads are filed, named, allocated, and evidenced — for\nany brand — stated exactly once, as data. Engine skills and tooling read these\nfiles rather than restating them. If you are following a skill that points\nhere and you cannot read these files, **stop and ask** rather than working\nfrom memory: a convention recalled is a convention forked.\n\nThese are the **defaults the plugin ships**. They are a complete, working set:\nan export named under them traces back to its creative, market and version,\nand an ad-set folder carries a number nothing else in the campaign uses. A\nteam or a user with a grammar of their own keeps it in a conventions folder on\nthe Mac, which replaces these file by file — see § Which copy to read.\n\n## Which copy to read\n\n**Before reading any of the files below, check whether this Mac has its own.**\nA file of the same name in **`~/.juicylucy/conventions/`** replaces the one\nhere — that folder is how a team keeps the grammar its uploader expects, or\nhow a user adopts their own. Each file stands alone: a folder holding only\n`languages.json` changes the language codes and nothing else. The `ad-naming`\ntool's `where` command lists which copy of every file is in effect:\n\n```bash\n~/.juicylucy/bin/adsnode <SKILLS_DIR>/ad-naming/scripts/naming.mjs where\n```\n\n(`<SKILLS_DIR>` is the directory that holds the installed skills — this\nskill's parent.) Read each file from the path it gives under `files`. The tool\nnames files and folders from the same copies, and while any of them is local\nit says so on every call — repeat that to the user once, so nobody mistakes a\nlocal grammar for the plugin's.\n\n## What each file owns\n\n| Read | For |\n| --- | --- |\n| [`naming.json`](naming.json) | **The** export filename grammar: the token pattern, per-medium constants (author, format, style vocabularies), funnel stages, the localization inheritance rule. |\n| [`foldering.json`](foldering.json) | **The** ad-set folder grammar: the hierarchy, the token pattern, and the global `#0000` sequence discipline shared across mediums. |\n| [`allocation.json`](allocation.json) | How languages and ad sets are allocated across active campaigns, and how candidates are ranked and excluded. |\n| [`languages.json`](languages.json) | The language table: names, codes, scripts, direction, per-language rendering notes. |\n| [`evidence.json`](evidence.json) | What counts as a final ad, the asset acceptance gate, the `.qa/` package, `PROJECT_STATE.md` conventions, contact-sheet spec. |\n\nProducing a filename, a folder name or a sequence number from this data is the\n`ad-naming` skill's job (`naming.mjs`), for both mediums; nothing here is typed\ninto a name by hand.\n\nThe [`references/`](references/) files carry the prose behind the data — the\nprocedures, worked examples, and checklists. The JSON is authoritative for\nvalues; the references are authoritative for method.\n\n## The discipline the data assumes\n\nFour rules repeat through every convention here, and every consumer is held to\nthem:\n\n1. **Reserve before you write.** Names and numbers are resolved collision-free\n   against the live filesystem before any output is moved into place — never\n   after, and never from memory or a tracker.\n2. **Re-scan immediately before creating.** A reservation made earlier in a\n   session may have been claimed; the scan that counts is the one just before\n   `mkdir` or the final move.\n3. **Rename what the change invalidates.** A folder's `N Ads` token states its\n   actual count; redistribution that changes the count renames the folder.\n4. **The filesystem is authoritative.** Chat updates, trackers, and manifests\n   may lag; direct listings, counts, and hashes settle every disagreement.\n\n## Making them your own\n\nTo adopt your own grammar: copy the file to change from this directory into\n`~/.juicylucy/conventions/`, change the values, and keep the filename and every\nkey — the tool reads the keys. Nothing needs restarting; the next call reads\nit. If an upload automation of yours parses filenames or ad-set names, its\ngrammar is the one to put in `naming.json` and `foldering.json`. The setup\nskill's `references/extending.md` § Changing the conventions is the flow.\n\nA copy of this whole skill in `~/.agents/skills/juicylucy/` (or a folder's\n`.agents/skills/`) also still changes what is read, below the conventions\nfolder, but it is not the way to do it: it replaces the skill's text along\nwith its values, and stops receiving the plugin's updates to either.\n\n## What does not belong here\n\nAnything true of one brand only — product scope, compliance rules, brand\nassets, competitor sets, account names — lives in that brand's `brand-*`\nskill. Anything true of one production batch only — dates, chosen languages,\nledgers — lives with the run, laid out per `evidence.json`.\n"
}

SHA-256 of public snapshot: 9bb42ec5916517d7a858e479aa8b5254f2b7dac730748d69224f7226c71dc71b