@scribe-platform/cli 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +4 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/content.d.ts.map +1 -1
- package/dist/commands/content.js +5 -1
- package/dist/commands/content.js.map +1 -1
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +6 -6
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/prospect.d.ts.map +1 -1
- package/dist/commands/prospect.js +4 -2
- package/dist/commands/prospect.js.map +1 -1
- package/dist/commands/request.d.ts.map +1 -1
- package/dist/commands/request.js +8 -4
- package/dist/commands/request.js.map +1 -1
- package/dist/commands/schema.js +1 -1
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/site.d.ts.map +1 -1
- package/dist/commands/site.js +5 -2
- package/dist/commands/site.js.map +1 -1
- package/dist/commands/submission.d.ts.map +1 -1
- package/dist/commands/submission.js +4 -1
- package/dist/commands/submission.js.map +1 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/user.d.ts +11 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +88 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +37 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +22 -7
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/proof-folder.d.ts.map +1 -1
- package/dist/lib/proof-folder.js +10 -3
- package/dist/lib/proof-folder.js.map +1 -1
- package/dist/lib/proof-preview.d.ts.map +1 -1
- package/dist/lib/proof-preview.js.map +1 -1
- package/dist/lib/proof-push.d.ts.map +1 -1
- package/dist/lib/proof-push.js +6 -1
- package/dist/lib/proof-push.js.map +1 -1
- package/dist/lib/skill.js +1 -1
- package/package.json +2 -2
- package/skills/scribe-site-builder/SKILL.md +52 -3
- package/skills/scribe-site-builder/recipes/README.md +11 -4
- package/skills/scribe-site-builder/recipes/client-logins.md +74 -0
- package/skills/scribe-site-builder/recipes/collections.md +5 -0
- package/skills/scribe-site-builder/recipes/deploy.md +5 -0
- package/skills/scribe-site-builder/recipes/domains.md +9 -1
- package/skills/scribe-site-builder/recipes/forms.md +5 -0
- package/skills/scribe-site-builder/recipes/proofs.md +32 -0
- package/skills/scribe-site-builder/recipes/prospects.md +5 -0
- package/skills/scribe-site-builder/recipes/requests.md +5 -0
- package/skills/scribe-site-builder/recipes/schema.md +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-push.js","sourceRoot":"","sources":["../../src/lib/proof-push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIxD;;;;;;;;GAQG;AAEH,uGAAuG;AACvG,MAAM,kBAAkB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"proof-push.js","sourceRoot":"","sources":["../../src/lib/proof-push.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/skill.js
CHANGED
|
@@ -95,7 +95,7 @@ export function reportSkillInstall() {
|
|
|
95
95
|
console.log(`Skill: installed scribe-site-builder to ${tildify(skill.dest)}.`);
|
|
96
96
|
}
|
|
97
97
|
else if (skill.status === 'missing-source') {
|
|
98
|
-
console.warn(
|
|
98
|
+
console.warn('Skill: this install is missing its bundled copy of scribe-site-builder — tell Dave.');
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
//# sourceMappingURL=skill.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scribe-platform/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Command-line interface for Scribe CMS
|
|
3
|
+
"version": "0.10.0",
|
|
4
|
+
"description": "Command-line interface for Scribe CMS \u2014 scaffold sites, edit content, and triage form submissions from the terminal",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dave Weaver",
|
|
7
7
|
"homepage": "https://github.com/scribe-platform/scribe/tree/main/packages/cli#readme",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scribe-site-builder
|
|
3
|
-
description: Guides building a website on Scribe CMS end to end — designing the Astro site freely against Scribe as its backend, editing the `.scribe.yml` schema, adding one or many forms, the local dev loop, pushing content, and deploying — using the `scribe` CLI and the recipes in `recipes/`. Also the reference for working an existing Scribe site (adding fields/collections, publishing content, triaging form submissions and inquiries, renaming, archiving, restoring or deleting a site), for taking a site live on a custom domain — checking whether a client has a domain, buying one, DNS/CNAME setup, GitHub Pages domain config, HTTPS — for the queue of requests clients have sent the agency (triaging, claiming, replying, closing), for the agency's prospect pipeline (logging calls, follow-ups, won/lost), and for proofs — sending a client work to review (logo boards, mockups, colour schemes), reading what they said, and sending the next version. Use whenever the user wants to build/create/start a new website or site with Scribe, add a form to a site, work on an existing Scribe site, publish/launch/go live with a site, point a site at a domain, set up or fix a custom domain or DNS for a Scribe site, work the inquiries a site has received, triage or reply to a client's request for work, log a call or follow-up with a prospect or client, wants to send a client something to look at or approve (logo ideas, mockups, options, a proof), asks what a client said about work they were sent, wants to do another round or version of something a client reviewed, or asks about the `scribe` CLI.
|
|
3
|
+
description: Guides building a website on Scribe CMS end to end — designing the Astro site freely against Scribe as its backend, editing the `.scribe.yml` schema, adding one or many forms, the local dev loop, pushing content, and deploying — using the `scribe` CLI and the recipes in `recipes/`. Also the reference for working an existing Scribe site (adding fields/collections, publishing content, triaging form submissions and inquiries, renaming, archiving, restoring or deleting a site), for taking a site live on a custom domain — checking whether a client has a domain, buying one, DNS/CNAME setup, GitHub Pages domain config, HTTPS — for the queue of requests clients have sent the agency (triaging, claiming, replying, closing), for the agency's prospect pipeline (logging calls, follow-ups, won/lost), and for proofs — sending a client work to review (logo boards, mockups, colour schemes), reading what they said, and sending the next version. Use whenever the user wants to build/create/start a new website or site with Scribe, add a form to a site, work on an existing Scribe site, publish/launch/go live with a site, point a site at a domain, set up or fix a custom domain or DNS for a Scribe site, work the inquiries a site has received, triage or reply to a client's request for work, log a call or follow-up with a prospect or client, wants to send a client something to look at or approve (logo ideas, mockups, options, a proof), asks what a client said about work they were sent, wants to do another round or version of something a client reviewed, wants to give a client a login or sign-in for their own site, set someone up to edit their own content, re-send or fix a sign-in link that expired or didn't arrive, or asks about the `scribe` CLI.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Building a site with Scribe
|
|
@@ -15,6 +15,54 @@ missing, it is a gap worth telling Dave about, not a file to go hunting for.
|
|
|
15
15
|
Scribe repo. That matters only to whoever edits it there; those paths do not
|
|
16
16
|
exist on a machine that installed the CLI from npm.)
|
|
17
17
|
|
|
18
|
+
## Who you're talking to — keep the CLI to yourself
|
|
19
|
+
|
|
20
|
+
The person in this chat is an **account manager at a web agency, not a
|
|
21
|
+
developer**. She runs all of Scribe by asking for things in plain English;
|
|
22
|
+
that is the promise her own guide makes her — *"You don't need to memorize
|
|
23
|
+
commands."* Every `scribe` command in this file and in `recipes/` is **yours
|
|
24
|
+
to run on her behalf, not hers to learn.**
|
|
25
|
+
|
|
26
|
+
So when she asks how something works — *"how do proofs work?"*, *"how do I add
|
|
27
|
+
a form?"*, *"how do I take a site live?"* — **do not answer with a list of
|
|
28
|
+
commands.** That is the wrong answer even though a command list is literally
|
|
29
|
+
what this reference contains. She can't use it, and handing it over tells her
|
|
30
|
+
there's a layer underneath that she's expected to learn. There isn't one.
|
|
31
|
+
|
|
32
|
+
Answer with four things instead:
|
|
33
|
+
|
|
34
|
+
1. **What the thing is**, in two or three sentences, in her terms. *A proof is
|
|
35
|
+
a page you send a client so they can look at your work and tell you what
|
|
36
|
+
they think.*
|
|
37
|
+
2. **What she'd say to get it** — the actual sentences she would type, not the
|
|
38
|
+
commands they turn into. *"Make Acme six logo concepts from the brand notes
|
|
39
|
+
in `research/`"* → *"show me"* → *"send it to Dana"*.
|
|
40
|
+
3. **The decisions that stay hers**, and only the ones that really are:
|
|
41
|
+
sending emails a real person so you'll always check first; a proof needs a
|
|
42
|
+
client to belong to.
|
|
43
|
+
4. **An offer to do it now**, named against something she's actually working
|
|
44
|
+
on.
|
|
45
|
+
|
|
46
|
+
Keep commands, flags, ids and file formats out of the prose. She will see
|
|
47
|
+
commands scroll past as you run them and that's fine — this rule is about what
|
|
48
|
+
you *teach* her and what you *ask of her*, not about hiding your tool calls.
|
|
49
|
+
The same goes for everything else that is plumbing: tokens, manifests, hashes,
|
|
50
|
+
version numbers she didn't ask about, option ids where a label will do ("the
|
|
51
|
+
wheat star one", not `logo-5`).
|
|
52
|
+
|
|
53
|
+
Two exceptions:
|
|
54
|
+
|
|
55
|
+
- **She asks for the command**, or says she's working in a terminal. Then give
|
|
56
|
+
it to her straight.
|
|
57
|
+
- **The one-time machine setup** — installing the CLI and `scribe login` — is
|
|
58
|
+
genuinely typed by hand, and her setup guide says so. Walk her through that
|
|
59
|
+
one at the keyboard.
|
|
60
|
+
|
|
61
|
+
And one thing that is never hers to deal with: when a command fails for a
|
|
62
|
+
reason that has nothing to do with her work — no login, an npm permission, a
|
|
63
|
+
CLI behind the API — fix it, or say plainly that it's one for Dave. Don't paste
|
|
64
|
+
her the error.
|
|
65
|
+
|
|
18
66
|
## Recipes — read the one you need
|
|
19
67
|
|
|
20
68
|
Per RFC 0010 the Astro site is **yours to design**. Scribe doesn't supply a
|
|
@@ -31,6 +79,7 @@ instead of reading all of them:
|
|
|
31
79
|
| [`recipes/requests.md`](./recipes/requests.md) | working the queue of jobs clients have asked the agency for |
|
|
32
80
|
| [`recipes/prospects.md`](./recipes/prospects.md) | logging calls and follow-ups on prospects (not site-building) |
|
|
33
81
|
| [`recipes/proofs.md`](./recipes/proofs.md) | sending a client work to review — logo boards, mockups, options — and working the rounds |
|
|
82
|
+
| [`recipes/client-logins.md`](./recipes/client-logins.md) | giving a client's own people a sign-in, and fixing a link that expired or never arrived |
|
|
34
83
|
|
|
35
84
|
[`recipes/README.md`](./recipes/README.md) lists the five things that are a hard
|
|
36
85
|
contract (because Scribe writes into the repo) as opposed to advice.
|
|
@@ -336,8 +385,8 @@ scribe request status <id> <open|in-progress|waiting-on-you|done|cancelled>
|
|
|
336
385
|
lossless, with each submission's events nested under it.
|
|
337
386
|
- `submission delete` is permanent, cascades the submission's history, and needs a
|
|
338
387
|
**staff** role — a site user's API key gets a 403. It prompts for the id unless
|
|
339
|
-
`--yes` is passed.
|
|
340
|
-
|
|
388
|
+
`--yes` is passed. Staff also have a **Delete** button on a submission's page in the
|
|
389
|
+
admin app (site users don't); either way, confirm with Ashley before deleting.
|
|
341
390
|
- **`scribe request` is the other queue, and the opposite direction.** A submission is
|
|
342
391
|
a Visitor contacting the *client*; a Request is the **client contacting the agency**
|
|
343
392
|
to ask for work. One cross-site queue, staff-only, nothing in any repo. Three things
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipes
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
Patterns for building an Astro site against Scribe as the backend. Per RFC
|
|
4
9
|
0010 these are **advice, not enforcement** — read the one you need, adapt it to the site you're
|
|
5
10
|
building, and ignore the rest. There is no template to conform to and no
|
|
@@ -15,11 +20,13 @@ generated config to keep in sync.
|
|
|
15
20
|
| [`requests.md`](./requests.md) | working the queue of jobs clients have asked the agency for |
|
|
16
21
|
| [`prospects.md`](./prospects.md) | recording and nurturing prospects in the calling pipeline |
|
|
17
22
|
| [`proofs.md`](./proofs.md) | sending a client work to review (logo boards, mockups) and working the rounds |
|
|
23
|
+
| [`client-logins.md`](./client-logins.md) | giving a client's own people a sign-in, and fixing a link that didn't work |
|
|
18
24
|
|
|
19
|
-
`requests.md`, `prospects.md` and `
|
|
20
|
-
about the agency's own work (its queue, its sales pipeline,
|
|
21
|
-
sends clients to review
|
|
22
|
-
here because the `scribe` CLI is the interface
|
|
25
|
+
`requests.md`, `prospects.md`, `proofs.md` and `client-logins.md` are the odd
|
|
26
|
+
ones out — they're about the agency's own work (its queue, its sales pipeline,
|
|
27
|
+
the work it sends clients to review, and who can sign in) rather than anything
|
|
28
|
+
in a Site's repo, and they live here because the `scribe` CLI is the interface
|
|
29
|
+
for all of it.
|
|
23
30
|
|
|
24
31
|
## The part that isn't advice
|
|
25
32
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Recipe: client logins
|
|
2
|
+
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
8
|
+
Giving a Client's own people a sign-in, so they can edit their Site's content
|
|
9
|
+
and work their own inquiries. Her guide for this is *Client logins*.
|
|
10
|
+
|
|
11
|
+
## 1. The rule that matters
|
|
12
|
+
|
|
13
|
+
**No password is ever created, shown, or sent.** Creating a Site user mints a
|
|
14
|
+
set-your-password **link**; the person redeems it and chooses their own. There
|
|
15
|
+
is no path where Ashley reads a credential to a client, and there should not
|
|
16
|
+
be one.
|
|
17
|
+
|
|
18
|
+
If she asks for "his password", that is the one request to answer with the
|
|
19
|
+
thing rather than the literal ask: she wants him able to sign in, and a fresh
|
|
20
|
+
link is how. Say so plainly — it takes one sentence and it is the whole point
|
|
21
|
+
of the design.
|
|
22
|
+
|
|
23
|
+
## 2. The commands
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
scribe user list <site>
|
|
27
|
+
|
|
28
|
+
scribe user add <site> --name "Mark Pawling" --email mark@pawlingmasonry.com
|
|
29
|
+
|
|
30
|
+
scribe user invite <site> mark@pawlingmasonry.com # a fresh link
|
|
31
|
+
scribe user invite <site> mark@pawlingmasonry.com --send-email
|
|
32
|
+
|
|
33
|
+
scribe user extend <site> mark@pawlingmasonry.com # revive the link he already has
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`add` creates the account and prints a link. `invite` issues another link for
|
|
37
|
+
somebody who already has an account. Both take `--json`.
|
|
38
|
+
|
|
39
|
+
**`--send-email` is opt-in, and that is deliberate — never add it unless she
|
|
40
|
+
asked.** Everything else here is reversible; emailing a real client is not. If
|
|
41
|
+
she hasn't said how she wants it delivered, hand her the link and ask.
|
|
42
|
+
|
|
43
|
+
## 3. What to tell her when a link doesn't work
|
|
44
|
+
|
|
45
|
+
Three failures, three different answers, and getting them the right way round
|
|
46
|
+
saves a phone call:
|
|
47
|
+
|
|
48
|
+
| She says | What happened | What to do |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| "He never got the email" | Spam, most likely | Give her the link to text. **Any link already sent still works** — a new one does not cancel it |
|
|
51
|
+
| "His link expired" | Past 7 days | `scribe user extend` — the link already in his messages starts working again, so nothing has to be re-sent |
|
|
52
|
+
| "It says already used" | He has a password | He needs **Forgot your password?** on the sign-in page. `extend` reports 0 here, which is the same answer |
|
|
53
|
+
|
|
54
|
+
Extending is the one worth reaching for first when the link is already out
|
|
55
|
+
there: a new link means she has to deliver it again, an extension doesn't.
|
|
56
|
+
|
|
57
|
+
## 4. Why several live links is fine
|
|
58
|
+
|
|
59
|
+
Issuing an invite does **not** revoke earlier ones. The raw token only exists
|
|
60
|
+
at the moment it is created — everything stored is a bcrypt hash — so a link
|
|
61
|
+
she has already texted can never be shown again, and superseding it would
|
|
62
|
+
silently strand it.
|
|
63
|
+
|
|
64
|
+
Redeeming any one link burns all the others for that person, so a spare can
|
|
65
|
+
never set the password a second time. That property is what makes multiple live
|
|
66
|
+
links safe, and it is worth not breaking.
|
|
67
|
+
|
|
68
|
+
## 5. Scope
|
|
69
|
+
|
|
70
|
+
A Site user sees their own Site and nothing else — never another Client, never
|
|
71
|
+
the agency's own pages. One person needing access to **two** Clients' Sites is
|
|
72
|
+
not this recipe: it crosses RFC 0006's client-group invariant, `grantSiteAccess`
|
|
73
|
+
will refuse it, and it is a conversation with Dave rather than a command to
|
|
74
|
+
find.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: rendering content collections
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
A content collection (anything without `form: true`) is a folder of files the
|
|
4
9
|
admin writes directly into the repo. Your job is to read them from the `path` the
|
|
5
10
|
schema declares, in the `format` it declares. That part isn't negotiable — the
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: build and deploy
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
Sites deploy to GitHub Pages from their own repo. Two parts of this are a
|
|
4
9
|
contract with Scribe rather than a preference: the workflow must accept
|
|
5
10
|
`workflow_dispatch`, and the Astro `base` must follow `public/CNAME`.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Taking a site live on a custom domain
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
One command does all of it. Reach for `scribe site promote` whenever the ask is
|
|
4
9
|
"publish the site at example.com", "point the domain at the site", "take it
|
|
5
10
|
live", or "set up the custom domain".
|
|
@@ -106,7 +111,10 @@ certificate, and promote will refuse with a `cloudflare-proxied` message.
|
|
|
106
111
|
`www` is not automatic. If a bare domain is the target and the client also wants
|
|
107
112
|
`www.example.com` to work, add a `www` CNAME → `<org>.github.io` at the
|
|
108
113
|
registrar; GitHub then redirects it to the apex on its own. Nothing in Scribe
|
|
109
|
-
needs to change for that.
|
|
114
|
+
needs to change for that. Promote (and `--dns-only`) checks it for a bare
|
|
115
|
+
domain and prints a `!` warning naming the record to add if `www` is missing
|
|
116
|
+
or still answered by a registrar's parking wildcard. The site is live either
|
|
117
|
+
way; add the record, and `www` works once DNS catches up — no re-run needed.
|
|
110
118
|
|
|
111
119
|
## Re-running is the fix
|
|
112
120
|
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: forms
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
A Site can have **as many forms as it likes**. Each one is a collection in
|
|
4
9
|
`.scribe.yml` with `form: true`, each gets its own inbox and its own workflow in
|
|
5
10
|
the admin, and each posts to the same endpoint with a different `collection`.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: proofs
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
A **Proof** is work the Agency sends a Client to look at — a board of logo
|
|
4
9
|
ideas, two colour schemes, a homepage mockup (RFC 0029). The Client opens a
|
|
5
10
|
link, reacts to the ideas with a thumbs up or down, comments, and approves or
|
|
@@ -16,6 +21,33 @@ avoid:
|
|
|
16
21
|
|
|
17
22
|
§6 and §10 are the parts to actually read. The rest is mechanics.
|
|
18
23
|
|
|
24
|
+
## 0. If she asks "how do proofs work?"
|
|
25
|
+
|
|
26
|
+
She is asking what a proof *is* and what to say to get one — not for the
|
|
27
|
+
commands below. Answer in her language, roughly:
|
|
28
|
+
|
|
29
|
+
> A proof is a page you send a client so they can look at your work and tell
|
|
30
|
+
> you what they think — a board of logo ideas, two colour schemes, a new
|
|
31
|
+
> homepage. They get a link from Weaver Digital, give each idea a thumbs up or
|
|
32
|
+
> down, leave comments pinned to the spot they're talking about, and tap
|
|
33
|
+
> Approve or Request changes when they've decided. All of it comes back here,
|
|
34
|
+
> on that client's record, instead of in your email.
|
|
35
|
+
>
|
|
36
|
+
> You'd just ask me for it: *"make Acme six logo concepts from the brand notes
|
|
37
|
+
> in research/"*, then *"show me"* to see it exactly as the client will, then
|
|
38
|
+
> *"send it to Dana"*. Later: *"what did Acme say about the logos?"* and *"do
|
|
39
|
+
> three alternatives to the wheat one and drop the ones nobody liked, then
|
|
40
|
+
> send it"* — that goes out as version 2 on the same link, with version 1 one
|
|
41
|
+
> tap away.
|
|
42
|
+
>
|
|
43
|
+
> Two things are yours: I'll always check with you before anything is emailed,
|
|
44
|
+
> and a proof has to belong to a client, so I'll offer to add them as a
|
|
45
|
+
> prospect first if they're new.
|
|
46
|
+
|
|
47
|
+
Then offer to make one for a client she's actually working on. Don't list the
|
|
48
|
+
rounds, the folder layout, option ids or version rules unless she asks — she
|
|
49
|
+
finds those out by doing it once.
|
|
50
|
+
|
|
19
51
|
## 1. Three rules that aren't negotiable
|
|
20
52
|
|
|
21
53
|
1. **Never run `scribe proof send` without Ashley saying yes to that send.**
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: prospects
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
Ashley's calling pipeline lives in Scribe as Clients with `status: 'prospect'`.
|
|
4
9
|
This recipe is about **recording and nurturing prospects she already has** —
|
|
5
10
|
logging what happened on a call, scheduling the next touch, and moving one
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: requests
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
A **Request** is a Client asking the Agency to do work — a content change, a new
|
|
4
9
|
page, a bug report, a question (RFC 0005). It is the mirror image of a
|
|
5
10
|
submission, and conflating the two is the mistake to avoid:
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Recipe: reading the schema
|
|
2
2
|
|
|
3
|
+
> **The commands below are yours to run, not hers to read.** If she's asking
|
|
4
|
+
> what this is or how to do it, answer it the way *Who you're talking to* in
|
|
5
|
+
> [`../SKILL.md`](../SKILL.md) says to: what it is, what she'd say to get it,
|
|
6
|
+
> what's her call, and an offer to do it now.
|
|
7
|
+
|
|
3
8
|
`.scribe.yml` sits in the Site's repo root and is the contract between Scribe and
|
|
4
9
|
the Site: it names the collections, their fields, where content lives, and which
|
|
5
10
|
collections are forms. The admin keeps it current — editors change it through the
|