alchemy-writing 0.1.0__tar.gz
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.
- alchemy_writing-0.1.0/PKG-INFO +62 -0
- alchemy_writing-0.1.0/README.md +43 -0
- alchemy_writing-0.1.0/pyproject.toml +35 -0
- alchemy_writing-0.1.0/setup.cfg +4 -0
- alchemy_writing-0.1.0/src/alchemy_writing/ALCHEMY.md +58 -0
- alchemy_writing-0.1.0/src/alchemy_writing/__init__.py +16 -0
- alchemy_writing-0.1.0/src/alchemy_writing/cli.py +89 -0
- alchemy_writing-0.1.0/src/alchemy_writing.egg-info/PKG-INFO +62 -0
- alchemy_writing-0.1.0/src/alchemy_writing.egg-info/SOURCES.txt +10 -0
- alchemy_writing-0.1.0/src/alchemy_writing.egg-info/dependency_links.txt +1 -0
- alchemy_writing-0.1.0/src/alchemy_writing.egg-info/entry_points.txt +2 -0
- alchemy_writing-0.1.0/src/alchemy_writing.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: alchemy-writing
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Turn AI prose into human-quality writing. A drop-in ruleset that stops your coding agent from writing like an LLM.
|
|
5
|
+
Author-email: fernforge <fernforgehq@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/fernforge/alchemy
|
|
8
|
+
Project-URL: Repository, https://github.com/fernforge/alchemy
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/fernforge/alchemy/issues
|
|
10
|
+
Keywords: ai,llm,writing,prose,humanize,claude,cursor,agents,style-guide,rules
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Topic :: Text Processing
|
|
16
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
17
|
+
Requires-Python: >=3.8
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# alchemy-writing
|
|
21
|
+
|
|
22
|
+
Turn AI prose into writing that reads like a person wrote it. This is the Python
|
|
23
|
+
distribution of [Alchemy](https://github.com/fernforge/alchemy) — a small ruleset you hand
|
|
24
|
+
your coding agent so the docs, READMEs, and replies it writes stop carrying the tell-tale
|
|
25
|
+
LLM patterns.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install alchemy-writing
|
|
31
|
+
alchemy init
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`alchemy init` writes `ALCHEMY.md` into your project and links it from your `CLAUDE.md`,
|
|
35
|
+
`AGENTS.md`, or `.cursorrules` if one exists. Your agent reads the rules whenever it writes
|
|
36
|
+
after that.
|
|
37
|
+
|
|
38
|
+
Print the rules instead of writing them:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
alchemy print
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or pull them into your own code:
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import alchemy_writing
|
|
48
|
+
print(alchemy_writing.rules())
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## What's in it
|
|
52
|
+
|
|
53
|
+
The rules are grounded in documented AI-writing tells: Wikipedia's "Signs of AI writing,"
|
|
54
|
+
the Kobak et al. study on words that spiked in research papers after ChatGPT, and Pangram's
|
|
55
|
+
phrase-frequency data. They cover the banned constructions, the fingerprint vocabulary, the
|
|
56
|
+
punctuation tells led by em-dash overuse, and a self-check the agent runs over its own prose.
|
|
57
|
+
|
|
58
|
+
Full project, including the npm package and MCP server: https://github.com/fernforge/alchemy
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
MIT
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# alchemy-writing
|
|
2
|
+
|
|
3
|
+
Turn AI prose into writing that reads like a person wrote it. This is the Python
|
|
4
|
+
distribution of [Alchemy](https://github.com/fernforge/alchemy) — a small ruleset you hand
|
|
5
|
+
your coding agent so the docs, READMEs, and replies it writes stop carrying the tell-tale
|
|
6
|
+
LLM patterns.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install alchemy-writing
|
|
12
|
+
alchemy init
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`alchemy init` writes `ALCHEMY.md` into your project and links it from your `CLAUDE.md`,
|
|
16
|
+
`AGENTS.md`, or `.cursorrules` if one exists. Your agent reads the rules whenever it writes
|
|
17
|
+
after that.
|
|
18
|
+
|
|
19
|
+
Print the rules instead of writing them:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
alchemy print
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Or pull them into your own code:
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
import alchemy_writing
|
|
29
|
+
print(alchemy_writing.rules())
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## What's in it
|
|
33
|
+
|
|
34
|
+
The rules are grounded in documented AI-writing tells: Wikipedia's "Signs of AI writing,"
|
|
35
|
+
the Kobak et al. study on words that spiked in research papers after ChatGPT, and Pangram's
|
|
36
|
+
phrase-frequency data. They cover the banned constructions, the fingerprint vocabulary, the
|
|
37
|
+
punctuation tells led by em-dash overuse, and a self-check the agent runs over its own prose.
|
|
38
|
+
|
|
39
|
+
Full project, including the npm package and MCP server: https://github.com/fernforge/alchemy
|
|
40
|
+
|
|
41
|
+
## License
|
|
42
|
+
|
|
43
|
+
MIT
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "alchemy-writing"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Turn AI prose into human-quality writing. A drop-in ruleset that stops your coding agent from writing like an LLM."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "fernforge", email = "fernforgehq@gmail.com" }]
|
|
13
|
+
keywords = ["ai", "llm", "writing", "prose", "humanize", "claude", "cursor", "agents", "style-guide", "rules"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Topic :: Text Processing",
|
|
20
|
+
"Topic :: Software Development :: Documentation",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://github.com/fernforge/alchemy"
|
|
25
|
+
Repository = "https://github.com/fernforge/alchemy"
|
|
26
|
+
"Bug Tracker" = "https://github.com/fernforge/alchemy/issues"
|
|
27
|
+
|
|
28
|
+
[project.scripts]
|
|
29
|
+
alchemy = "alchemy_writing.cli:main"
|
|
30
|
+
|
|
31
|
+
[tool.setuptools.packages.find]
|
|
32
|
+
where = ["src"]
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.package-data]
|
|
35
|
+
alchemy_writing = ["ALCHEMY.md"]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Alchemy — write like a human, not an LLM
|
|
2
|
+
|
|
3
|
+
Rules for an AI writing prose for people: docs, READMEs, comments, commits, emails,
|
|
4
|
+
replies. Goal: text a sharp person would write — specific, uneven, unpadded. Not text that
|
|
5
|
+
performs sounding human. Applies to prose, not code.
|
|
6
|
+
|
|
7
|
+
**The meta-rule:** no single word or dash proves AI. The tell is *density* — many of these
|
|
8
|
+
clustered, plus flat, evenly-weighted texture. Weight co-occurrence over any one hit, and
|
|
9
|
+
never strip a word that's genuinely the right one.
|
|
10
|
+
|
|
11
|
+
## Banned constructions
|
|
12
|
+
- **"Not just X, it's Y"** / "It's not about A — it's about B." Empty contrast. Say what it is.
|
|
13
|
+
- **"No X. No Y. Just Z."** staccato trios. And rule-of-three flourishes: "fast, reliable, scalable."
|
|
14
|
+
- **Hollow elevation:** "game changer," "next level," "unlock the potential," "transform how you," "take it to the next level."
|
|
15
|
+
- **Throat-clearing openers:** "In today's fast-paced world," "In the ever-evolving landscape of," "In the realm of," "At its core," "Now more than ever."
|
|
16
|
+
- **Significance inflation:** "stands as a testament to," "plays a crucial role," "serves as a powerful reminder," "a rich tapestry of," "navigating the complexities of," "harness the power of."
|
|
17
|
+
- **Hedge stems:** "It's important to note," "It's worth mentioning," "When it comes to," "That being said."
|
|
18
|
+
- **Recap closers:** "In conclusion," "Ultimately," "All in all," "At the end of the day," "There you have it."
|
|
19
|
+
- **Assistant outro:** "Hope this helps!" "Feel free to reach out," "Let me know if you have questions!"
|
|
20
|
+
- **Leaked-AI artifacts (dead giveaways):** "As an AI language model," "Certainly!" "I cannot," "As of my last update," "Great question!"
|
|
21
|
+
- **Restating the prompt** before answering it.
|
|
22
|
+
|
|
23
|
+
## Banned words
|
|
24
|
+
delve, underscore, showcase, tapestry, testament, intricate, meticulous, pivotal, realm,
|
|
25
|
+
landscape (abstract), boasts, garner, groundbreaking, multifaceted, seamless, robust,
|
|
26
|
+
leverage, harness, unleash, unlock, elevate, embark, foster, navigate (figurative), vibrant,
|
|
27
|
+
beacon, cornerstone, burgeoning.
|
|
28
|
+
|
|
29
|
+
**Ration hard** (tell when stacked): comprehensive, powerful, cutting-edge, innovative,
|
|
30
|
+
transformative, holistic, nuanced, streamline, empower, facilitate, resonate, ensure,
|
|
31
|
+
utilize ("use"), "in order to" ("to"). Transitions (Moreover, Furthermore, Additionally,
|
|
32
|
+
Notably) — one or two per piece, max.
|
|
33
|
+
|
|
34
|
+
The fix is never a synonym — it's a concrete fact. Not "robust" but "handles 10k req/sec."
|
|
35
|
+
|
|
36
|
+
## Punctuation and formatting
|
|
37
|
+
- **Em-dashes — the loudest tell.** Most-cited but least reliable, so the giveaway is high *density* of pristine, correctly-spaced dashes. Use rarely; prefer a period, comma, or parentheses. More than one in a few paragraphs is too many.
|
|
38
|
+
- **Smart/curly quotes** read as machine-set in casual or plain-text contexts. Use straight quotes (`'` `"`) unless the medium is typeset prose.
|
|
39
|
+
- **Emoji:** at most one, and only in genuinely casual writing. None in docs, READMEs, commits, or headers. Never as bullets (✅ 🚀 ✨).
|
|
40
|
+
- **Bold:** real labels and warnings only. No **bolded-lead-in bullets** ("**Speed:** it's fast").
|
|
41
|
+
- Sentence case headers, not Title Case. No header on every short answer.
|
|
42
|
+
|
|
43
|
+
## Substance
|
|
44
|
+
- Name the specific. No vague attribution — "studies show," "experts say," "research suggests" — you can't source. Numbers, versions, commands.
|
|
45
|
+
- Don't dodge "is/are" with "serves as," "stands as," "represents."
|
|
46
|
+
- Cut sentences true of almost anything ("good docs matter"). Cut the weakest 20%. Take a stance instead of listing both sides.
|
|
47
|
+
|
|
48
|
+
## Voice
|
|
49
|
+
- Vary sentence length — uniform medium-length cadence is a tell. A short one lands. Then a longer one carrying the qualification. Then short.
|
|
50
|
+
- Contractions are normal. "You" is fine; "one might consider" is not.
|
|
51
|
+
- Don't perform enthusiasm — no "exciting/amazing" on ordinary things. A little dry opinion reads human.
|
|
52
|
+
|
|
53
|
+
## Before returning, check
|
|
54
|
+
Throat-clearing opener? Recap closer? Banned words/constructions clustered? Em-dash density?
|
|
55
|
+
Suspicious symmetry (equal paragraphs, every section three bullets)? Could someone who knows
|
|
56
|
+
the topic tell a person wrote it? Lead with the one specific, slightly opinionated thing only
|
|
57
|
+
someone who did the work would say. The point isn't beating a detector — it's writing
|
|
58
|
+
something worth reading.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Alchemy — human-quality writing rules for AI agents.
|
|
2
|
+
|
|
3
|
+
The rules themselves live in ALCHEMY.md next to this module. `rules()` returns
|
|
4
|
+
their text; the `alchemy` command-line tool writes them into a project.
|
|
5
|
+
"""
|
|
6
|
+
from importlib import resources
|
|
7
|
+
|
|
8
|
+
__version__ = "0.1.0"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def rules() -> str:
|
|
12
|
+
"""Return the full text of the Alchemy ruleset."""
|
|
13
|
+
return resources.files(__package__).joinpath("ALCHEMY.md").read_text(encoding="utf-8")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
__all__ = ["rules", "__version__"]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Command-line tool: install the Alchemy ruleset into the current project."""
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from . import rules
|
|
6
|
+
|
|
7
|
+
POINTER = (
|
|
8
|
+
"\n## Writing style\n\n"
|
|
9
|
+
"When writing prose (docs, READMEs, comments, commits, replies), follow the rules in "
|
|
10
|
+
"`ALCHEMY.md` in this repo: write human-quality text, avoid the tell-tale LLM patterns.\n"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
# Agent config files that take a natural-language pointer. First existing one wins.
|
|
14
|
+
AGENT_FILES = ["CLAUDE.md", "AGENTS.md", ".cursorrules", ".github/copilot-instructions.md"]
|
|
15
|
+
|
|
16
|
+
HELP = """alchemy - human-quality writing rules for AI agents
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
alchemy init Write ALCHEMY.md into this project and link it from your agent
|
|
20
|
+
config (CLAUDE.md / AGENTS.md / etc).
|
|
21
|
+
alchemy print Print the ruleset to stdout.
|
|
22
|
+
alchemy --help Show this.
|
|
23
|
+
|
|
24
|
+
Flags:
|
|
25
|
+
--force Overwrite an existing ALCHEMY.md.
|
|
26
|
+
--no-link Don't touch agent config files; just write ALCHEMY.md.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _init(argv):
|
|
31
|
+
text = rules()
|
|
32
|
+
dest = Path.cwd() / "ALCHEMY.md"
|
|
33
|
+
|
|
34
|
+
if dest.exists() and "--force" not in argv:
|
|
35
|
+
print("* ALCHEMY.md already exists - left it alone (use --force to overwrite).")
|
|
36
|
+
else:
|
|
37
|
+
dest.write_text(text, encoding="utf-8")
|
|
38
|
+
print("[ok] wrote ALCHEMY.md")
|
|
39
|
+
|
|
40
|
+
if "--no-link" in argv:
|
|
41
|
+
return _done()
|
|
42
|
+
|
|
43
|
+
for rel in AGENT_FILES:
|
|
44
|
+
p = Path.cwd() / rel
|
|
45
|
+
if not p.exists():
|
|
46
|
+
continue
|
|
47
|
+
cur = p.read_text(encoding="utf-8")
|
|
48
|
+
if "ALCHEMY.md" in cur:
|
|
49
|
+
print(f"* {rel} already references ALCHEMY.md")
|
|
50
|
+
else:
|
|
51
|
+
p.write_text(cur.rstrip() + "\n" + POINTER, encoding="utf-8")
|
|
52
|
+
print(f"[ok] linked ALCHEMY.md from {rel}")
|
|
53
|
+
return _done()
|
|
54
|
+
|
|
55
|
+
print(
|
|
56
|
+
"* no agent config found. Add this line to your CLAUDE.md / AGENTS.md / .cursorrules:\n"
|
|
57
|
+
" See ALCHEMY.md for writing style."
|
|
58
|
+
)
|
|
59
|
+
_done()
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _done():
|
|
63
|
+
print("\nDone. Your agent now has the rules. Review ALCHEMY.md and tune to taste.")
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def main(argv=None):
|
|
67
|
+
argv = list(sys.argv[1:] if argv is None else argv)
|
|
68
|
+
cmd = argv[0] if argv else None
|
|
69
|
+
if cmd in (None, "--help", "-h", "help"):
|
|
70
|
+
print(HELP)
|
|
71
|
+
elif cmd == "init":
|
|
72
|
+
_init(argv[1:])
|
|
73
|
+
elif cmd == "print":
|
|
74
|
+
# Write UTF-8 bytes directly: the ruleset has characters (em-dash, emoji it
|
|
75
|
+
# cites as examples) that a Windows cp1252 console can't encode via stdout.write.
|
|
76
|
+
data = rules()
|
|
77
|
+
try:
|
|
78
|
+
sys.stdout.buffer.write(data.encode("utf-8"))
|
|
79
|
+
except AttributeError:
|
|
80
|
+
sys.stdout.write(data)
|
|
81
|
+
else:
|
|
82
|
+
sys.stderr.write(f'alchemy: unknown command "{cmd}"\n\n')
|
|
83
|
+
print(HELP)
|
|
84
|
+
return 1
|
|
85
|
+
return 0
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
if __name__ == "__main__":
|
|
89
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: alchemy-writing
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Turn AI prose into human-quality writing. A drop-in ruleset that stops your coding agent from writing like an LLM.
|
|
5
|
+
Author-email: fernforge <fernforgehq@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/fernforge/alchemy
|
|
8
|
+
Project-URL: Repository, https://github.com/fernforge/alchemy
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/fernforge/alchemy/issues
|
|
10
|
+
Keywords: ai,llm,writing,prose,humanize,claude,cursor,agents,style-guide,rules
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Topic :: Text Processing
|
|
16
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
17
|
+
Requires-Python: >=3.8
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# alchemy-writing
|
|
21
|
+
|
|
22
|
+
Turn AI prose into writing that reads like a person wrote it. This is the Python
|
|
23
|
+
distribution of [Alchemy](https://github.com/fernforge/alchemy) — a small ruleset you hand
|
|
24
|
+
your coding agent so the docs, READMEs, and replies it writes stop carrying the tell-tale
|
|
25
|
+
LLM patterns.
|
|
26
|
+
|
|
27
|
+
## Install
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install alchemy-writing
|
|
31
|
+
alchemy init
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`alchemy init` writes `ALCHEMY.md` into your project and links it from your `CLAUDE.md`,
|
|
35
|
+
`AGENTS.md`, or `.cursorrules` if one exists. Your agent reads the rules whenever it writes
|
|
36
|
+
after that.
|
|
37
|
+
|
|
38
|
+
Print the rules instead of writing them:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
alchemy print
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or pull them into your own code:
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import alchemy_writing
|
|
48
|
+
print(alchemy_writing.rules())
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## What's in it
|
|
52
|
+
|
|
53
|
+
The rules are grounded in documented AI-writing tells: Wikipedia's "Signs of AI writing,"
|
|
54
|
+
the Kobak et al. study on words that spiked in research papers after ChatGPT, and Pangram's
|
|
55
|
+
phrase-frequency data. They cover the banned constructions, the fingerprint vocabulary, the
|
|
56
|
+
punctuation tells led by em-dash overuse, and a self-check the agent runs over its own prose.
|
|
57
|
+
|
|
58
|
+
Full project, including the npm package and MCP server: https://github.com/fernforge/alchemy
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
MIT
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
src/alchemy_writing/ALCHEMY.md
|
|
4
|
+
src/alchemy_writing/__init__.py
|
|
5
|
+
src/alchemy_writing/cli.py
|
|
6
|
+
src/alchemy_writing.egg-info/PKG-INFO
|
|
7
|
+
src/alchemy_writing.egg-info/SOURCES.txt
|
|
8
|
+
src/alchemy_writing.egg-info/dependency_links.txt
|
|
9
|
+
src/alchemy_writing.egg-info/entry_points.txt
|
|
10
|
+
src/alchemy_writing.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
alchemy_writing
|