{"adoption": {"forks": 304, "observed_at": "2026-08-28T04:06:09.116660+00:00", "stars": 2050}, "canonical_url": "https://ross.abutalabs.com/products/ctool", "card": {"archived": false, "artifact_type": "application", "description": "程序开发常用工具 chrome / edge / firefox / utools / windows / linux / mac", "domain": ["developer-tools", "web-development", "cross-platform", "text-editors"], "enriched": true, "function": ["developer-tools", "serialization", "cryptography", "yaml", "csv", "markdown", "date-time", "math", "websocket", "gui", "cli"], "health_score": 42, "homepage": "https://ctool.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["baiy/Ctool"], "name": "baiy/Ctool", "platform": ["browser-extension", "cross-platform", "windows"], "pushed_at": "2025-07-21T03:33:05+00:00", "repo": "baiy/Ctool", "stars": 2050, "tags": ["chrome-extension", "firefox-extension", "edge-extension", "utools-plugin", "electron-app", "tauri", "offline-tools", "hashing", "encoding", "qrcode", "jwt", "uuid", "code-formatter", "regex-testing", "timestamp-conversion", "chinese-pinyin", "unit-conversion", "crontab", "command-line", "macos", "linux", "web-server", "desktop"], "topics": ["crx", "qrcode", "chrome-extension", "firefox-extension", "electron-app", "developer-tools", "development"], "urls": [], "use_cases": ["format and validate JSON payloads", "convert timestamps to human-readable dates", "generate and parse QR codes", "encode and decode base64 or URLs", "test regular expressions", "compute md5 or sha hashes of text and files", "encrypt and decrypt strings with AES or DES", "convert between variable naming conventions"], "what_it_is": "Ctool is a multi-platform Swiss-army toolbox of common developer utilities including hashing, encryption/decryption, encoding, JSON/YAML/XML serialization, timestamp conversion, QR codes, code formatting, and text processing. It ships as a Chrome/Edge/Firefox extension, a uTools plugin, a web app, and Windows/Linux/macOS desktop clients.", "when_to_avoid": ["you need deeply specialized tools like full API clients or database GUIs", "you require team collaboration or cloud-synced snippets", "you need programmatic/CLI automation rather than interactive GUI tools"], "when_to_choose": ["you need a single offline-capable toolbox for everyday dev utilities", "you want the same tools across browser, desktop, and uTools", "you frequently convert between serialization formats like JSON, YAML, and XML", "you need Chinese-specific tools like pinyin conversion or simplified/traditional conversion"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ctool", "repo": "baiy/Ctool", "role": "main", "score": 37}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.116660+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:57:35.372225+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "870883043de29cb5d4bf9b9fd9b8f697900a6a4a5d809ddbd8c5a3cfe550612c", "fetched_at": "2026-08-28T04:06:09.116660+00:00", "kind": "readme", "missing": false, "url": "https://github.com/baiy/Ctool"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 32, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3198, "days_push": 408, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 37, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}