🧭 Internal Enablement · Marketing AI Programs

The front door to Cloudflare's internal tools

One skill that answers the question everyone kept asking — “does a tool for this already exist, and if not, how do I get one built?” — grounded in a single live source of truth, never guesswork.

/skill-directory → AI Intake fallback
Internal use only · Grounded in the live Directory sheet · Owned by Marketing Operations
1
live source of truth
7
fields returned per match
24
structured intake fields
12
request categories

The problem

Why this exists

Cloudflare's internal AI skills and tools were multiplying faster than anyone could keep track of them — and there was no consolidated place to find them.

A skill might live in the shared library. Another might sit in a single team's namespace. A third might be half-built in someone's backlog, or "planned" but not usable yet. When a marketer wanted to know whether a capability already existed, the honest answer was: ask around and hope. That gap created real, repeatable friction:

🔁

Duplicated work

People rebuilt tools that already existed — or gave up and did the task by hand — because they had no way to know a solution was already live.

🤷

No ownership trail

Even when a tool existed, "who owns this?" and "which team runs it?" had no reliable answer, so questions and improvement ideas went nowhere.

🚧

Live vs. not-yet

There was no clear signal for whether something was Live, still In Build, or merely Planned — so people counted on tools that weren't ready.

One question, one front door: “Does a tool for this exist? Is it usable? Who owns it? And if it doesn't exist — how do I get it built?”

Skill Directory closes that gap. Instead of tribal knowledge and Slack archaeology, there is now a single, authoritative lookup that reads the team's live Directory and hands back exactly what exists — and, when nothing does, a frictionless on-ramp to request that it be built. No more dead ends.

In one line

What Skill Directory is

A single, authoritative lookup for Cloudflare's internal tools and skills — “does a tool for X exist, is it usable, and who owns it?” — grounded in the team's live Directory, with a built-in on-ramp to request anything that doesn't exist yet.

📇 Skill Directory /skill-directory

“Does a tool for X exist — and who owns it?”

A directory lookup grounded in the team's live Directory spreadsheet. It searches that sheet and hands back the matching tool or skill's full record. When nothing matches, it offers to submit a build request through the Marketing AI Intake.

  • Corpus: the live Directory Google Sheet — the team's registry of internal tools & skills.
  • Returns: the tool's name, category, status, description, owner, team, and link.
  • No-match fallback: a pre-filled AI Intake form to request a build.
  • Owned by: Marketing Operations.

🎯 What it's for

It replaces “ask around and hope” with one reliable answer. Ask in plain language — by capability, by name, or by owner — and it tells you exactly what exists and whether you can use it today.

🚫 What it's not

It isn't a launcher, and it isn't a search over the whole company. It reads one curated source, reports only what's there, and never runs the tool or invents an answer.

🔎 The one thing to remember

Skill Directory searches the curated Directory sheet — which tracks each tool's status, ownership, and description — and returns exactly what exists. When there's no match, it turns your request into a build submission through the Marketing AI Intake, instead of leaving you at a dead end.

The payload

Exactly what Skill Directory gives you

For every matching tool or skill, it returns a complete record — seven fields, pulled live from the sheet, never invented.

FieldWhat it tells youSource column in the sheet
Name The tool or skill's name — the thing you'd actually invoke or ask for. Agent Name
Category Which functional area it belongs to (e.g. Demand Planning & Budget), so you can browse a domain. Type/Category
Status Whether it's usable today. Always called out explicitly — a match that isn't Live is flagged as not yet usable. StatusLive In Build Planned
Description A one-line summary of what the tool actually does, taken verbatim from the sheet. Description
Owner / POC The person driving or owning it — your point of contact for questions, access, or change requests. Business Driver
Team The owning team, so you know which group runs and maintains it. Team
Link The primary link to open or learn more. If the cell is blank, it reports “not listed” rather than guessing a URL. Link
⚠️ Status is never buried

Because a tool that's still In Build or only Planned can't be used yet, the skill always surfaces status prominently — a match isn't the same as a green light. If it isn't Live, you're told so directly.

When there's more than one hit

If several entries plausibly match, the skill returns a short ranked shortlist (up to ~5) — each with its name, status, and one-line description — and offers to expand any of them into the full seven-field record above. Most-relevant first.

Grounding

One source of truth: the live Directory sheet

Everything Skill Directory says about a tool comes from one place — the team's Directory spreadsheet — read fresh on every single request. It never answers from memory, from general knowledge, or from whatever skills happen to be loaded in the session.

📊 The registry

A Google Sheet named “Master List” is the team's canonical registry of internal tools and skills. Each row is one tool; the columns carry its metadata (name, category, status, description, owner, team, link, notes, visibility).

Open the Directory sheet →

🔌 How it's read

The skill reads the sheet live through the Google Workspace (Sheets) tool on the CF Portal MCP. It maps columns by their header names — not by position — so the lookup keeps working even if the sheet's columns get reordered.

If a value it needs is genuinely missing, it says which field is missing instead of guessing.

🔄 Self-healing connection

The CF Portal connection can occasionally look “connected” while its calls quietly fail. The skill handles this automatically: on a failed read it reconnects once, then retries — so it keeps working even when a session's access has gone stale, with no manual steps for you. If it still can't reach the sheet, it says so plainly and shares the sheet link rather than fabricating an answer.

🚫 Never invents anything

If a tool isn't in the sheet, then as far as Skill Directory is concerned it doesn't exist. It will never make up a name, owner, team, or link. Blank cells are reported as “not listed,” never filled in with a guess.

Under the hood

How a lookup runs, start to finish

🎯 Two outputs, and only two

Skill Directory produces exactly two kinds of output: (1) directory match info read from the sheet, or (2) a build-request form link. It never performs the task you asked about, never builds the tool itself, and never produces any other artifact — no docs, decks, tickets, emails, or code.

The fallback

When the tool doesn't exist → the AI Intake on-ramp

A “no” is never a dead end. When a lookup finds nothing, Skill Directory offers to turn your request into a Marketing AI Intake — a build request that reaches the Marketing AI Programs team for review and prioritization.

✋ It's opt-in

The fallback only fires after a genuine no-match and only if you say yes. The skill asks exactly one question — “want me to submit a build request so the team can consider building it?” If you decline, it stops. It never pushes the intake after a successful match.

🧠 Inference-first, not an interrogation

It doesn't run a long interview. It silently pre-fills as many intake fields as it can from the conversation you already had — the capability you searched for, how you handle it today, the systems you named — and asks only for the handful of things it genuinely can't infer.

📨 The deliverable is a pre-filled Google Form link

The intake reuses Cloudflare's existing Marketing AI Intake Google Form — it never builds a new form. The skill assembles a single pre-filled link with your answers already dropped in, so all you do is open it and review. Submitting that form records your request to the same responses spreadsheet as the standard Marketing AI Intake, so it lands in the same queue the team already reviews.

⚠️ Nothing is submitted until you click Submit

The pre-filled link is a draft, not a submission. Your request only reaches the team when you open the link and click Submit on the form yourself. The skill makes this explicit every time.

Need something built right now rather than queued for review? The intake points you to marketing-build-request@cloudflare.com for direct help.

Inside the intake

What the build request captures

The intake gathers 24 structured fields so reviewers have everything they need to evaluate and prioritize the request. Most are inferred for you; you're only asked for what can't be guessed (typically who you are, scale/impact, stakes, and self-serve readiness).

1 · Identity

requester_nameteamrole

2 · The problem

current_stateproblem_statementconcrete_exampleplatforms_involved

3 · Agent task & success

agent_tasksuccess_criteriacost_of_delaydeadline

4 · Scale & impact

time_spentpeople_affectedteams_affectedsensitive_datapipeline_impactpipeline_estimate

5 · Self-serve & build

ai_experiencehas_tried_aiself_serve_willingbuild_stagebuild_roadblocks

6 · Classification

agent_categoryadditional_context

The request is filed under one of 12 categories

To route it to the right owners, every request is tagged with a single agent_category:

Data & Analytics Reporting & Performance Tracking Demand Planning & Budget Campaign Execution & Management Lead Management & Nurture Email & Lifecycle Marketing Events & Field Marketing Content & Creative Paid Media & Advertising Web & Digital Experience Operations & Workflow Automation Partner & Channel Marketing
🔗 One shared intake, two front doors

Skill Directory's build-request fallback and the standalone /ai-intake skill write to the same Google Form and the same responses sheet. Whether a request originates from a failed directory lookup or someone starting an intake directly, it lands in one consistent, reviewable queue.

Trust model

The guardrails that keep it trustworthy

📡 Live read, every time

The sheet is the source of truth and is read fresh on each lookup — never from a cached copy or from memory.

🚫 Never fabricates

Only names, statuses, owners, teams, and links that actually appear in the sheet. Blank cells are reported as “not listed.”

🧾 Two outputs only

Directory match info, or a build-request link. It never does the task, builds the tool, or produces any other artifact.

🧭 Activates on any tool/skill ask

“Is there a skill for X?”, “who owns Y?”, “what do we have for Z?” — and it reads the sheet before answering, not the loaded-skills list.

🗺️ Maps columns by header

Adapts to reasonable header changes and reordering, so the lookup keeps working as the sheet evolves.

✋ Fallback is opt-in

The AI Intake path only runs after a no-match and your explicit yes. It's never pushed after a successful match.

Getting started

How to use it

You don't have to remember the command — just ask naturally. The skill activates on any request to locate an internal tool or skill.

Ask by capability

“Is there a skill for competitor research?” · “What tool do we have for email QA?” · “Do we have something that builds account plans?”

Ask by name or owner

“Where's the email consultant skill?” · “Who owns the AI intake skill?” · “What team runs the campaign analyzer?”

Browse a category

“What do we have under Demand Planning & Budget?” — it lists what exists so you can scan a whole domain.

Or just run the command

Type /skill-directory to start a lookup directly — or just describe the tool or skill you're looking for, and it activates automatically.

See it in motion

Worked examples

① A tool exists — you get its full record

skill-directory — match
you › is there a skill for reviewing a blog draft?

directory › Reading the live Directory sheet…
Name — Blog Review
Category — Content & Creative
Status — Live ✅ (usable now)
Description — Reviews a Cloudflare blog draft for quality, depth & convention compliance.
Owner / POC[Business Driver from sheet]
Team[owning team]
Link — Open

② Nothing matches — it offers the build request

skill-directory — no match → intake
you › do we have a tool that scores webinar attendee intent?

directory › I couldn't find a tool or skill matching that in the Directory.
Want me to submit a build request to the Marketing AI Programs team so they can consider building it?

you › yes

directory › Inferring intake answers from our conversation… Quick bit about you — your name, team, and role?
…(asks only what it can't infer, then confirms)…

directory › Here's your pre-filled intake — review and click Submit to file it:
https://docs.google.com/forms/d/e/1FAIpQLS…/viewform?usp=pp_url&entry…
⚠️ Your request isn't submitted until you open it and hit Submit.

Quick answers

FAQ

Does Skill Directory actually run the tool it finds?

No. It's a lookup, not a launcher. It tells you what exists — name, status, owner, team, link — and, when nothing exists, offers the build request. It never performs the task or builds the tool itself.

How current are the results?

Always current. It reads the live Directory sheet fresh on every request, so results reflect the sheet as it is right now — not a snapshot from earlier in the conversation.

What if a tool is listed but isn't “Live”?

Status is always surfaced. A match that's In Build or Planned is flagged as not yet usable, so you never count on something that isn't ready.

Is my request submitted the moment I get the pre-filled link?

No — the link is a draft with your answers pre-filled. Your request only reaches the team when you open it and click Submit on the Google Form.

What's the difference between the AI Intake fallback and running /ai-intake directly?

None in where it lands — both write to the same form and the same responses sheet. The difference is the on-ramp: Skill Directory's fallback fires automatically after a failed lookup and pre-fills answers from context, while /ai-intake is the standalone interview you can start any time.

Could it ever make up a tool or an owner?

No. It only ever returns values present in the sheet. If something isn't in the Directory, it doesn't exist as far as the skill is concerned, and blank fields are reported as “not listed.”