JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 91,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 77942
},
"pushed_at": "2026-07-24T06:52:17Z",
"created_at": "2026-06-28T13:50:09Z",
"owner_type": "User",
"updated_at": "2026-07-24T06:52:14Z",
"description": "memo is a small CLI for storing durable memories for humans and coding agents",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": null,
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "Juan C. Yamacho H.",
"type": "User",
"login": "jcyamacho",
"company": null,
"location": null,
"followers": 15,
"avatar_url": "https://avatars.githubusercontent.com/u/4062731?v=4",
"created_at": "2013-04-04T20:11:59Z",
"is_verified": null,
"public_repos": 24,
"account_age_days": 4861
},
"license": {
"state": "absent",
"spdx_id": null,
"raw_spdx": null,
"file_present": false,
"scorecard_found": false,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.0.6",
"kind": "patch",
"published_at": "2026-07-24T06:53:32Z"
},
{
"tag": "v0.0.5",
"kind": "patch",
"published_at": "2026-07-04T14:56:07Z"
},
{
"tag": "v0.0.4",
"kind": "patch",
"published_at": "2026-06-30T21:28:30Z"
},
{
"tag": "v0.0.3",
"kind": "patch",
"published_at": "2026-06-29T22:32:08Z"
},
{
"tag": "v0.0.2",
"kind": "patch",
"published_at": "2026-06-29T22:25:48Z"
},
{
"tag": "v0.0.1",
"kind": "patch",
"published_at": "2026-06-29T21:48:21Z"
}
],
"recent_commits": [
{
"oid": "3a42f9f57d5617176246b0e83cff32ecee091f56",
"body": "Refactor command construction to inject dependencies, introduce typed UUID memory IDs, centralize hook configuration, improve error output, and map linked worktrees to their main repository. Add lifecycle coverage and update documentation and tool versions.",
"is_bot": false,
"headline": "refactor(cli): inject service into commands",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-07-24T06:51:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b18cf54a6bc30ddb398a684354f51eb6694adc43",
"body": "Add shared test helpers and coverage for add, edit, delete, get, list, and workspace behavior in `internal/memory`.\nAdd `AGENTS.md` with project-specific instructions for layout, testing, and validation.",
"is_bot": false,
"headline": "test(memory): add service coverage",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-07-04T14:54:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f77d2e21f739cfee99851093f02c3fb065511445",
"body": "add `memo hook codex` and `memo hook claude` to write session-start hooks for the two agent configs, preserving unrelated settings and removing duplicate `memo context` entries.\n\nalso add shared JSON file helpers and tests, plus update the README to document the hook workflow and command layout.",
"is_bot": false,
"headline": "feat(hook): add agent hook setup",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-07-04T13:48:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8db17cae53c631a3f1fc94cfc45d57f0fce7a5ff",
"body": null,
"is_bot": false,
"headline": "docs(readme): add hook examples",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-30T21:56:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6657a10f280214902b3220de8e6b749995e10a7",
"body": "drop commit and build metadata from the version command, remove the cask publish step, and update the Homebrew install command in the README to match the formula install path",
"is_bot": false,
"headline": "refactor(release): simplify version output",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-30T21:25:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "02617f0d1aa604d30d422e81737f7423ffc3dfee",
"body": null,
"is_bot": false,
"headline": "feat(release): add checksum calculation for Homebrew formula updates",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T22:30:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13d34f5c6ec7439cef4b04a32435a3bcf31496df",
"body": "add a release step that updates the memo Homebrew formula in the tap\nusing `TAP_GITHUB_TOKEN` for the commit and push.",
"is_bot": false,
"headline": "ci(release): bump homebrew formula",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T22:24:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61641eb494ec3b5bbf2ff3a4ded3208f132d2374",
"body": "add usage metadata for the release task and read the parsed bump from\n`usage_bump` instead of the raw positional argument.\nallow `fix` as an alias for `patch` in the bump choices.",
"is_bot": false,
"headline": "fix(release): validate release bump arg",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T21:46:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8275ef3cc53eb3813505475a6c4b856b5261bf3f",
"body": "Add a `memo version` command wired to build-time\nversion metadata, then add GoReleaser config and a\nGitHub release workflow that runs checks, builds\narchives, publishes releases, and updates the\nHomebrew cask. Also add a `mise run release`\ntask to tag and push new releases.",
"is_bot": false,
"headline": "feat(release): add versioned release flow",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T21:36:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bb27c3aea7e7f49b4a7bb9114bfb812606a9249",
"body": "Run `mise run check` on pull requests and pushes to `main` with read-only\nrepository permissions.",
"is_bot": false,
"headline": "ci(github): add check workflow",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T19:57:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "524e8f9e79d0f26753601ba0bee34f48dee7c3e0",
"body": "Document mise setup and add a `check` task that runs lint, tests, and build checks. Also simplify list target copying in `fsstore` with a direct struct conversion.",
"is_bot": false,
"headline": "chore(dev): add mise check tasks",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-29T19:51:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a49e40a394f69bbcc967181e87321d1f556cc5c",
"body": "Add `ctx` as an alias for the `context` command so the session-start memory output can be invoked with a shorter command name.",
"is_bot": false,
"headline": "feat(cmd): add ctx alias",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T23:07:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61c1f7925ed440a0767ec1c44ba14c904a71d956",
"body": "add `memo context` to print session-start XML with durable instructions and\nworkspace plus global memories. reuse workspace resolution across `add` and\n`list`, and add XML coverage for the new output shape.",
"is_bot": false,
"headline": "feat(cmd): add context command",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T23:04:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "584d06b1f4fee94fbcdab0908ed71e67a4f8715a",
"body": "remove the always-false `has_more` attribute from `memo list` xml output and update the empty-list test.\n\nrefresh `internal/skill/SKILL.md` to use tighter command wording, clearer memory-gating rules, and the current output contract.",
"is_bot": false,
"headline": "fix(cmd): drop list has_more attr",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T22:34:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4258f8b5bf38303ecea8db7c583f2532e27eebc",
"body": "Switch the install section to use `go install github.com/jcyamacho/memo@latest` and note that `$GOBIN` or `$GOPATH/bin` must be on `PATH`.",
"is_bot": false,
"headline": "docs(readme): update install instructions",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:52:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f1db4403a79506f8fe818ad1b2b24497d4d1326",
"body": "ignore the local `memo` and `memo.exe` artifacts, and normalize the icon entry spacing in `.gitignore`",
"is_bot": false,
"headline": "chore(gitignore): ignore built memo binaries",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:47:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19adcf9d3c8c292e68606269ba9b4a690f462788",
"body": "Document install, storage, scopes, commands, output, and agent usage in the new README. Add `ws` as an alias for `memo workspaces`.",
"is_bot": false,
"headline": "docs(cmd): add cli usage readme",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:46:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f65b3b8a7c7e7a0264d45bac0f054fe4790cb7a4",
"body": "Document the current `memo edit <id>` form instead of `--id`, add a piped\nedit example, and update the global promotion example to match the CLI.",
"is_bot": false,
"headline": "docs(skill): update edit command docs",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:41:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2765cd7f577cd8e2b639841641f791fb1a297d5",
"body": "add the root command plus add, get, list, edit, delete, workspaces, and skill\nsubcommands. add XML rendering and helper tests so the CLI can print and parse\nmemory data consistently.",
"is_bot": false,
"headline": "feat(cmd): add memory cli commands",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:41:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4434cb4b603be3d0da0a21ad3712ed2ba808f8c",
"body": "implement filesystem persistence for memories and workspaces, including\ninsert, get, list, update, delete, and workspace enumeration\n\ncover workspace path escaping, global listing, duplicate inserts, and\ncleanup of empty workspace directories",
"is_bot": false,
"headline": "feat(fsstore): add file-backed memory store",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:11:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94fe762aaa294937d59914ee8eebe94a90ef781e",
"body": "replace the custom random id generator with `github.com/google/uuid` and return canonical uuid strings from `newID()`. update module metadata to include the new dependency.",
"is_bot": false,
"headline": "refactor(memory): use uuid ids",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T13:11:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee6f89a00cc2a59eaae14d7e01b3edc5125d9b79",
"body": "move memory state behind accessors and return DTOs from service methods.\nupdate content and promotion to refresh updated timestamps only when the\nvalue actually changes, and switch list filtering to variadic options.",
"is_bot": false,
"headline": "refactor(memory): touch updates on changes",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T12:56:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "725ea723798427c3443e0ff149d14bed7a470398",
"body": null,
"is_bot": false,
"headline": "fix: sort memories by updated time",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T11:56:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9a330a76148488d799b61b21547cb5c6f59b6b3",
"body": "update `ListFilter.Global` to `IncludeGlobals` and pass the renamed field from the memory service list path. add a workspace comment to clarify the empty-workspace behavior.",
"is_bot": false,
"headline": "refactor(memory): rename global list filter",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T11:51:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2076c1bf6af3c770cd6793c9f21bb0ef74f56fdd",
"body": "factor out shared directory and file permission constants in git resolver tests, and use a small helper for mkdir calls to reduce duplication.",
"is_bot": false,
"headline": "test(workspace): reuse test path perms",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-28T11:09:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94a342d2f1ee4bc6e68cf5f58682fb0ca5535174",
"body": "add the memory service, workspace resolver, and embedded skill guide.\nwire the CLI to the file store and use git roots for workspace scoping.\ninclude resolver tests and ignore local build artifacts.",
"is_bot": false,
"headline": "feat(memo): add core memory cli",
"author_name": "Juan C. Yamacho H.",
"author_login": "jcyamacho",
"committed_at": "2026-06-27T15:26:52Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 6,
"commits_last_year": 26,
"latest_release_at": "2026-07-24T06:53:32Z",
"latest_release_tag": "v0.0.6",
"releases_from_tags": false,
"days_since_last_push": 3,
"active_weeks_last_year": 3,
"days_since_latest_release": 3,
"mean_days_between_releases": 4.9
},
"community": {
"has_readme": true,
"has_license": false,
"has_description": true,
"has_contributing": false,
"health_percentage": 28,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/jcyamacho/memo",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/jcyamacho/memo",
"is_deprecated": false,
"latest_version": "v0.0.6",
"repository_url": "https://github.com/jcyamacho/memo",
"versions_count": 6,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-24T06:51:36Z",
"latest_version_yanked": null,
"days_since_latest_publish": 3
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"mise.toml"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 6927,
"source_files_sampled": 56,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 2425
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/google/go-cmp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.7.0"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 0,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "jcyamacho",
"commits": 26,
"avatar_url": "https://avatars.githubusercontent.com/u/4062731?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"check.yml",
"release.yml"
],
"has_docs_dir": false,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/26 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 0,
"reason": "license file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "3a42f9f57d5617176246b0e83cff32ecee091f56",
"ran_at": "2026-07-27T18:56:10Z",
"aggregate_score": 2.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-24T06:53:38Z",
"oldest_open_prs": [],
"last_merged_pr_at": null,
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/jcyamacho/memo",
"host": "github.com",
"name": "memo",
"owner": "jcyamacho"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"security": 29,
"vitality": 67,
"community": 12,
"governance": 36,
"engineering": 68
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 67,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"commits_last_year": 26,
"human_commit_share": 1,
"days_since_last_push": 3,
"active_weeks_last_year": 3
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "3/52 weeks with commits",
"points": 2.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 3
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "26 commits in the last year",
"points": 12.9,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 26
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 6,
"latest_release_tag": "v0.0.6",
"releases_from_tags": false,
"days_since_latest_release": 3,
"mean_days_between_releases": 4.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "6 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 6
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~4.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 4.9
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 12,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 1,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 1
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": true,
"has_license": false,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "no license file detected",
"points": 0,
"status": "missed",
"details": [
{
"code": "license_absent",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 36,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution",
"pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 1,
"inputs": {
"merged_prs": 0,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "no decided pull requests or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_decided_prs_or_data",
"params": {}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/26 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 51,
"inputs": {
"followers": 15,
"owner_type": "User",
"is_verified": null,
"owner_login": "jcyamacho",
"public_repos": 24,
"account_age_days": 4861
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "15 followers of jcyamacho",
"points": 8.7,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 15,
"login": "jcyamacho"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "24 public repos, account ~13 yr old",
"points": 22.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 24
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/jcyamacho/memo"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 3
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 3 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 3
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "6 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 6
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 68,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 80,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "critical",
"name": "Security",
"value": 29,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 29,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 2.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/26 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 82,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 2425
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "26 of 26 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 26,
"sampled": 26
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"mise.toml"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "mise.toml",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "mise.toml"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 26",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 26
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 6927,
"source_files_sampled": 56,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/56 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 56,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-27T18:56:14.653826Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jcyamacho/memo.svg",
"full_name": "jcyamacho/memo",
"license_state": "absent",
"license_spdx": null
}