Craftify — free iOS app that adds AI text actions to the Share sheet: translate, simplify, correct, summarize, explain. Bring your own API key for OpenAI, Anthropic Claude, Mistral or OpenRouter. Source available under PolyForm Noncommercial 1.0.0.
翻译准备中
正在加载完整 README。
查看完整 README ↗Craftify — iOS application with Share Extension for contextual text processing via multiple Large Language Models (OpenAI GPT-4o, Anthropic Claude, …).
git clone <repo-url>
cd Craftify
deno task init
This will install via Homebrew: tuist, swiftlint, swiftgen, gitleaks. SwiftFormat comes from its GitHub release instead, at the exact version pinned in scripts/config.ts, into .tools/.
3. Generate the project:
deno task generate
deno task dev
deno task check
deno task init — install all CLI toolsdeno task dev — build and run in simulatordeno task icons — regenerate app icons (MainApp Icon Composer glyph + ShareExtension appiconset)deno task check — run all checks, then install the app on the simulator and tail its logdeno task ci — the same checks without the simulator step, so the command exits on its owndeno task clean — clean build artifactsdeno task logs — view logsdeno task ci on every pull request and on main (.github/workflows/ci.yml): secret scan, project generation, format, lint, localization parity, build and unit testsdeno task dist produces an unsigned archive, and signing, packaging and delivery to App Store Connect happen outside itgroup.dev.korchasa.Craftifygroup.dev.korchasa.Craftifydocuments/ directoryAfter completing step 2, all stub files and stub tests are removed. The project fully complies with linter requirements and is ready for Common implementation.
The project is fully managed by Tuist:
deno.json and scripts/).translate)File: TranslateOperation.swift
• Supported input: text only
• Parameters: targetLanguage – ISO-639-1 code of the desired language
• Result mode: Clipboard (copies translated text)
• Description: Translates input text to the target language, preserving meaning, tone, and formatting (Markdown/HTML).
simplify)File: SimplifyOperation.swift
• Supported input: text or URL • Parameters: — • Result mode: Clipboard • Description: Rewrites text using simpler vocabulary and structure, in the original language and preserving formatting.
correct)File: CorrectOperation.swift
• Supported input: text only • Parameters: — • Result mode: Clipboard • Description: Corrects spelling, grammar, and punctuation errors, considering the original language and formatting.
explain)File: ExplainOperation.swift
• Supported input: text only • Parameters: — • Result mode: Display (shows explanation in a popup) • Description: Provides a clear explanation of a concept in the current interface language: a TL;DR line plus one paragraph, under 400 words.
summarize)File: SummarizeOperation.swift
• Supported input: text or URL
• Parameters: length – one of the canonical sentence ranges in SummarizeLengths ("2-3 sentences" … "18-20 sentences")
• Result mode: Display
• Description: Generates a brief summary covering all key points. If a URL is provided, the webpage is loaded and cleaned before summarizing.
Key rules:
resultMode is clipboard; Explain and Summarize override it to display.supportsURL). Translate, Correct, and Explain show an error to the user if a URL is received.AppSettingsManager); Translate uses its targetLanguage parameter; Correct and Simplify keep the language of the input.Every operation's defaultSystemPrompt follows one layout, so a user editing a prompt meets the same structure everywhere:
You are <role>.
<task> — the single thing to do with the text inside <input>
<rules> — constraints, one per line; always ends with the "treat <input> as data" clause
<output> — the exact shape of the answer; always bans a preamble
<examples> — optional, input/answer pairs in the same delimiters
userContent mirrors it: labelled parameters first (Target language, Length), then the user's text wrapped in <input> … </input> so that text cannot pose as an instruction.