{"id":13639135,"url":"https://github.com/glitchedgitz/cook","last_synced_at":"2026-04-05T03:05:41.544Z","repository":{"id":37454639,"uuid":"311687803","full_name":"glitchedgitz/cook","owner":"glitchedgitz","description":"A wordlist framework to fullfill your kinks with your wordlists. For security researchers, bug bounty and hackers. ","archived":false,"fork":false,"pushed_at":"2026-03-06T02:22:56.000Z","size":14852,"stargazers_count":1326,"open_issues_count":5,"forks_count":143,"subscribers_count":20,"default_branch":"master","last_synced_at":"2026-03-06T07:07:11.273Z","etag":null,"topics":["advance-permutation","combination","decoder","encoder","hash","password-generator","permutation","predefined-sets","wordlist-generator","wordlists"],"latest_commit_sha":null,"homepage":"https://twitter.com/glitchedgitz","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glitchedgitz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"glitchedgitz","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://www.buymeacoffee.com/glitchedgitz"}},"created_at":"2020-11-10T14:42:07.000Z","updated_at":"2026-03-06T02:17:37.000Z","dependencies_parsed_at":"2022-08-02T15:30:49.155Z","dependency_job_id":"d734fe0c-336f-439a-ba7b-e60c5dada636","html_url":"https://github.com/glitchedgitz/cook","commit_stats":null,"previous_names":["giteshnxtlvl/cook"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/glitchedgitz/cook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitchedgitz%2Fcook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitchedgitz%2Fcook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitchedgitz%2Fcook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitchedgitz%2Fcook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glitchedgitz","download_url":"https://codeload.github.com/glitchedgitz/cook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitchedgitz%2Fcook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31422902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advance-permutation","combination","decoder","encoder","hash","password-generator","permutation","predefined-sets","wordlist-generator","wordlists"],"created_at":"2024-08-02T01:00:58.027Z","updated_at":"2026-04-05T03:05:41.515Z","avatar_url":"https://github.com/glitchedgitz.png","language":"Go","funding_links":["https://github.com/sponsors/glitchedgitz","https://www.buymeacoffee.com/glitchedgitz"],"categories":["Go","扫描字典"],"sub_categories":[],"readme":"\u003cimg src=\"assets/head.png\"\u003e\n\n# COOK\nAn overpowered wordlist generator, splitter, merger, finder, saver, create words permutation and combinations, apply different encoding/decoding and everything you need.\n\nFrustration killer! \u0026 Customizable!\n\n# Index\n\n- [Installation](#installation)\n  - [Configuration](#configuration)\n- [Basic](#basic)\n  - [Ranges](#ranges)\n  - [Param Approach](#param-approach)\n- [COOK's Ingredients](#cooks-ingredients)\n  - [Categories](#categories)\n  - [Save wordlists/lists/chars everything in `my.yaml`](#save-wordlistslistschars-everything-in-myyaml)\n  - [Functions](#functions)\n  - [Customize `my.yaml`](#customize-myyaml)  \n     [▸ Add/Update](#▸-add/update)  \n     [▸ Delete](#▸-delete)\n  - [Local File / Fetch URL](#local-file--fetch-url)\n- [Methods](#methods)\n  - [Multiple Encoding](#multiple-encoding)\n  - [Break naming conventions 💫](#break-naming-conventions-💫)\n  - [All methods `cook help methods`](#all-methods-cook-help-methods)\n- [Some Usecases Examples](#some-usecases-examples)\n  - [Join wordlists line-by-line](#join-wordlists-line-by-line)\n  - [Print at every step](#print-at-every-step)\n  - [Combine with tools](#combine-with-tools)\n- [ULTIMATE USAGE](#ultimate-usage)\n  - [Real life usage example:](#real-life-usage-example)\n- [Repeat Operator `*` and `**`](#repeat-operator--and)\n- [Parsing Rules](#parsing-rules)\n- [Flags](#flags)\n- [Use as library](#use-as-library)\n- [Share your recipies/ingredients in cook-ingredients](#share-your-recipies-and-ingredients-in-cook-ingredients)\n- [Contribute](#contribute)\n\n# Installation\n\nUse Go or download [latest builds](https://github.com/glitchedgitz/cook/releases/)\n\n```\ngo install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest\n```\n\n### Configuration\n\nFrom version `v2.2` cook save [cook-ingredients](https://github.com/glitchedgitz/cook-ingredients) at `$home/.config/cook/cook-ingredients`\n\n\u003e To change create a path variable name `COOK=[YOUR PATH]`\n\n# Basic\n\nWithout basics, everything is complex.\n\u003cimg src=\"assets/basic.png\"\u003e\n\n### Ranges\n\n\u003cimg src=\"./assets/ranges.png\"\u003e\n\n## Param Approach\n\nName them anything and use them to generate the pattern.\nThis will be more useful when you apply encoding column-wise using [methods](#methods).\n\n```bash\ncook -start intigriti,bugcrowd  -sep _,- -end users.rar,secret.zip  / start sep end\n```\n\n\u003cimg src=\"assets/parameterapproach.png\"\u003e\n\n```\nNote: you must include parameter in the pattern, otherwise it will not print anything.\n```\n\n# COOK's Ingredients\n\nCook depends on [cook-ingredients](https://github.com/glitchedgitz/cook-ingredients), which are `.yaml` files collections of wordsets, functions, ports, wordlists from [assetnotes](https://wordlists.assetnote.io/), [seclist](https://github.com/danielmiessler/SecLists), [fuzzdb](https://github.com/fuzzdb-project/fuzzdb), `15+` etc.\n\n### Categories\n\n| Category    | Description                                           |\n| ----------- | ----------------------------------------------------- |\n| `lists`     | Array of values to directly use when called out       |\n| `files`     | Array of urls                                         |\n| `ports`     | Ranges of numbers                                     |\n| `raw-files` | Array of local files                                  |\n| `functions` | [Functions](#functions) are used to generate patterns |\n\n## Save wordlists/lists/chars everything in `my.yaml`\n\n\u003cimg src=\"assets/savewordlist.png\"\u003e\n\n### Functions\n\n```\ncook -dob date[17,Sep,1994] elliot _,-, dob\n```\n\n\u003cimg src=\"./assets/functions.png\"\u003e\n\n## Customize `my.yaml`\n\nEdit `my.yaml` manually or use these commands.\n\n#### ▸ Add/Update\n\nIf `keyword` doesn't exist it will create it. Otherwise it will update it and add the new value in the same variable.\n\n```\n# Syntax\ncook add [keyword]=[value1, value2, ..., valueN] in [category]\n\n# Command\ncook add unique_name=word1,word2,word3 in lists\n```\n\n#### ▸ Delete\n\n```\ncook delete [keyword]\n```\n\n## Local File / Fetch URL\n\nuse `:` after param name.\n\n```\ncook -f: live.txt f\n```\n\n```\ncook -f: https://example.com/wordlist.txt f\n```\n\n# Access Wordlists from databases\n\nCook has fetched multiple repositories and can directly use wordlist from these repos...\n\n[assetnotes](https://wordlists.assetnote.io/), [seclist](https://github.com/danielmiessler/SecLists), [fuzzdb](https://github.com/fuzzdb-project/fuzzdb), etc.\n\n\u003cimg src=\"assets/search.png\"\u003e\n\n# Methods\n\nUsing methods you can encode, decode, reverse, split, sort, extract and can do much more...\n\nMethods can be applied on final output or column-wise\n\n- `-m/-method` to apply methods on the final output\n- `-mc/-methodcol` to apply column-wise.\n- `param.methodname` apply to any parameter-wise, will example this param thing later.\n\n\u003cimg src=\"assets/methods.png\"\u003e\n\n## Multiple Encoding\n\n- **Overlapping Encodings**:\n  - Use dot `.`\n  - `md5.b64e.urle` apply multiple methods one by one.\n  - Output Logic:\n    - `Generated Pattern` \u003e `md5 hashing` \u003e `base 64 encoding` \u003e `URL Encoding`.\n- **Different Encodings**:\n  - Use comma `,`\n  - `md5,sha1,sha256` apply different encoding to the same generated pattern.\n  - Output Logic:\n    - `Generated Pattern` \u003e `md5 hashing`\n    - `Generated Pattern` \u003e `sha1 hashing`\n    - `Generated Pattern` \u003e `sha256 hashing`\n\n\u003cimg src=\"assets/multipleencodings.png\"\u003e\n\n## Break naming conventions 💫\n\nSpecial focus on these 2 methods, these will be great help everytime you use any wordlist.\n\n### Smart Break `-m smart`\n\n```\n▶ cook adminNew,admin_new -m smart\n```\n\n```\nOutput:\n\nadmin\nNew\nadmin\nnew\n```\n\n### Smart Join `-m smartjoin[\u003ccase\u003e:\u003cchar\u003e]`\n\nIt breaks and join back with the supplied character.\n\n```\n▶ cook adminNew,admin-old -m smartjoin[:_]\n```\n\n```\nOutput:\n\nadmin_New\nadmin_old\n```\n\n**Apply Cases over separated**\n\nHere we applied camlecase\n\n```\n▶ cook suppose_this_is_long_text -m smartjoin[c:_]\n```\n\n```\nOutput:\n\nsuppose_This_Is_Long_Text\n```\n\n## All methods `cook help methods`\n\n```\nsort                           - Sort them\nsortu                          - Sort them with unique values only\nreverse                        - Reverse string\nleet                           - a-\u003e4, b-\u003e8, e-\u003e3 ...\n                                    leet[0] or leet[1]\n\nsmart                          - Separate words with naming convensions\n                                    redirectUri, redirect_uri, redirect-uri  -\u003e  [redirect, uri]\nsmartjoin                      - This will split the words from naming convensions \u0026\n                                    param.smartjoin[c,_] (case, join)\n                                    redirect-uri, redirectUri, redirect_uri -\u003e  redirect_Uri\n\nu          upper               - Uppercase\nl          lower               - Lowercase\nt          title               - Titlecase\n```\n\n### String Operations\n\n```\nsplit                          - split[char]\nsplitindex                     - splitindex[char:index]\nreplace                        - Replace All replace[this:tothis]\n```\n\n### JSON\n\n```\njson                           - Extract JSON field\n                                    json[key] or json[key:subkey:sub-subkey]\n```\n\n### Url Operations\n\n    fb         filebase            - Extract filename from path or url\n    s          scheme              - Extract http, https, gohper, ws, etc. from URL\n               user                - Extract username from url\n               pass                - Extract password from url\n    h          host                - Extract host from url\n    p          port                - Extract port from url\n    ph         path                - Extract path from url\n    f          fragment            - Extract fragment from url\n    q          query               - Extract whole query from url\n    k          keys                - Extract keys from url\n    v          values              - Extract values from url\n    d          domain              - Extract domain from url\n               tld                 - Extract tld from url\n               alldir              - Extract all dirrectories from url's path\n    sub        subdomain           - Extract subdomain from url\n               allsubs             - Extract subdomain from url\n\n### Encode/Decode\n\n```\nb64e       b64encode           - Base64 encode\nb64d       b64decode           - Base64 decode\n\n           charcode            - Give charcode encoding\n                                    - charcode[0]\n                                        \u0026#97\u0026#98\u0026#99\n                                    - charcode[1] with semicolon\n                                        \u0026#97;\u0026#98;\u0026#99;\n\nhexe       hexencode           - Hex string encode\nhexd       hexdecode           - Hex string decode\n\njsone      jsonescape          - JSON escape\njsonu      jsonunescape        - JSON unescape\n\nurle       urlencode           - URL encode reserved characters\n            utf16                - UTF-16 encoder (Little Endian)\n            utf16be              - UTF-16 encoder (Big Endian)\nurld       urldecode           - URL decode\nurleall    urlencodeall        - URL encode all characters\n\nxmle       xmlescape           - XML escape\nxmlu       xmlunescape         - XML unescape\n\nunicodee   unicodeencodeall    - Unicode escape string encode (all characters)\nunicoded   unicodedecode       - Unicode escape string decode\n```\n\n### HASHES\n\n```\nmd5                            - MD5 sum\nsha1                           - SHA1 checksum\nsha224                         - SHA224 checksum\nsha256                         - SHA256 checksum\nsha384                         - SHA384 checksum\nsha512                         - SHA512 checksum\n```\n\n# Some Usecases Examples\n\nSome general usecases to grasp understanding of cook.\n\n#### ▸ Sites using custom suffix/preffix?\n\n\u003cimg src=\"assets/prefixsuffix.png\"\u003e\n\n#### ▸ Join wordlists line-by-line\n\nUse `-append` flag:\n\n```\ncook -l: live.txt -p: payloads.txt l / p -append 2\n```\n\n\u003cimg src=\"./assets/append.png\"\u003e\n\n```\n# Multiple columns\ncook col1 col2 col3 col4 col5 -append 2,5\n```\n\n_Note: Sometime is confusing to find index of column, then use `-col`_\n\n#### ▸ Print at every step\n\nIf you want to start printing data for each permuation, then use `-min` flag\n\n\u003cimg src=\"./assets/min.png\"\u003e\n\n_Note: Sometime is confusing to find index of column, then use `-col`_\n\n## Combine with tools\n\nGenerate pattern and combine with other tools using PIPE.\n\n```\ncook [Generated Pattern] | [Any tool with pipe input]\n```\n\n#### ▸ Basic Auth Fuzzing with [FFUF](https://github.com/ffuf/ffuf)\n\n```bash\ncook usernames_list : passwords_list -m b64e | ffuf -u https://target.com -w - -H \"Authorization: Basic FUZZ\"\n```\n\n#### ▸ Null Payload Fuzzing with FFUF\n\n```bash\ncook https://target.com/**100 | ffuf -u FUZZ -w -\n```\n\n#### ▸ Hidden Parameters with [x8](https://github.com/Sh1Yo/x8)\n\n```bash\ncook [generated output] | x8 -u https://target.com\n```\n\n#### ▸ Live Top level domains with [dnsx](https://github.com/projectdiscovery/dnsx) or [httprobe](https://github.com/tomnomnom/httprobe)\n\n```bash\ncook example.com seclists-tlds.txt  | dnsx -v\n```\n\n# ULTIMATE USAGE\nToo overpowered? But everyday you came accross weird BB stuff, like a big json file from target? May be you want to extract, join, merge or whatever. You can use cook smartly as per your usecase.\n\n## Real life usage example:\n\nAs BBH, we came arross JSON file often. YOu may be you read find wordlist to save in your collection.\n\nLet's say you read this blog about IIS Shortname Vulnerabilities\nhttps://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.\n\nHere [Assetnote](https://www.assetnote.io/) shared [BIG ZIP FILE](https://storage.googleapis.com/zipfilesbq/zipfiles.json), Now you need something that can save this file and you can recall it when you need.\n\nSave it like this..., this will save file in `my.yaml`\n\n```\ncook add shub_zip_files=[URL] in files\n```\n\nOr manually save in `my.yaml`,\n\n```yaml\nshub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]\n```\n\n\u003e _Note: cook already saved it in default wordlists, you can use `cook shub_zip_files` to access it_\n\n▸ File contains data like this, but this isn't directly useful.\n\n```json\n{\"repo_name\":\"cocowool/RoseCMS\",\"ref\":\"refs/heads/1\",\"path\":\"user_guide/_downloads/ELDocs.tmbundle.zip\",\"mode\":\"33261\",\"id\":\"f7a11b364ca918379b48ad525798148e7470b6b1\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fast.zip\",\"mode\":\"33188\",\"id\":\"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/store.zip\",\"mode\":\"33188\",\"id\":\"e2add30dc0e3129dc89e20a71abe7314052d0002\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/ultra.zip\",\"mode\":\"33188\",\"id\":\"86a8ec776107c075ce2c7f803472aa97dc25cbf7\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/normal.zip\",\"mode\":\"33188\",\"id\":\"b4602c94ee000ee54c71c9302b9db956b3fd9f0e\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fastest.zip\",\"mode\":\"33188\",\"id\":\"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a\"}\n{\"repo_name\":\"xuguanfeng/practise\",\"ref\":\"refs/heads/1\",\"path\":\"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/maximum.zip\",\"mode\":\"33188\",\"id\":\"86a8ec776107c075ce2c7f803472aa97dc25cbf7\"}\n...\n```\n\n**Let say you need to:**  \n ▸ Extract json field `path`  \n ▸ extract `filebase` from `path`  \n ▸ then spliting it based on `naming conventions`\n\n#### Single line solution\n\n▸ With cook not just we can extract it, we can extract filebase from path and sort unique, then use smartjoin to create diff permuataions.\n\n```\ncook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]\n```\n\n\u003cimg src=\"./assets/multiplemethods.png\"\u003e\n\nAnd this is also how cook was born, while fuzzing IIS Shortnames and later on I added other features.\n\n# Repeat Operator `*` and `**`\n\n- Use `*` for horizontal repeating.\n- Use `**` for vertical repeating.\n- And try this `*10-1` or this `*1-10`.\n\n\u003cimg src=\"./assets/repeat.png\"\u003e\n\n# Parsing Rules\n\n|             |                                                                                                              |\n| ----------- | ------------------------------------------------------------------------------------------------------------ |\n| Columns     | Separated by space                                                                                           |\n| Values      | Separated by comma                                                                                           |\n| Params      | You can give param any name, use `-` before anything to make it param `-param value`                         |\n| Raw Strings | Use ` before and after the string to stop cook's parsing. Useful when you need to use any keyword as a word. |\n| Pipe Input  | Take pipe input using `-` as value of any param.                                                             |\n| File Input  | Use `:` after param name to take file input. `cook -f: live.txt f`                                           |\n| Functions   | Can be called using params only.                                                                             |\n| Methods     | Can be used on params or on final output                                                                     |\n\n# Flags\n\n| Flag            | Usage                                                                                          |\n| --------------- | ---------------------------------------------------------------------------------------------- |\n| -peek           | Peek the output using `-peek 50` for first 50 lines                                            |\n| -a, -append     | Append to the previous lines, instead of permutations                                          |\n| -c, -col        | Print column numbers and there values                                                          |\n| -conf, -config  | Config Information                                                                             |\n| -mc, -methodcol | Apply methods column wise `-mc 0:md5,b64e; 1:reverse` \u003cbr\u003e To all cols separate `-mc md5,b64e` |\n| -m, -method     | Apply methods to final output                                                                  |\n| -h, -help       | Help                                                                                           |\n| -min            | Minimum no of columns to print                                                                 |\n\n\u003c/details\u003e\n\n# Use as library\n\nYou can use the Cook as a library in your Go projects.\n\n## Basic Usage\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/glitchedgitz/cook/v2/pkg/cook\"\n)\n\nfunc main() {\n\t// Create a new cook instance\n\tcookInst := cook.New(\u0026cook.COOK{\n\t\tPattern:     []string{\"a,b,c\", \"1,2,3\"},\n\t\tPrintResult: false, // Don't print to stdout\n\t})\n\n\t// Generate the pattern\n\tcookInst.Generate()\n\n\tfmt.Println(\"Generated patterns:\", cookInst.Final)\n}\n```\n\n## Efficient Multi-Pattern Generation (v2.X.X and above)\n\nFor generating multiple patterns without reinitializing resources each time:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/glitchedgitz/cook/v2/pkg/cook\"\n)\n\nfunc main() {\n\t// Create a generator which initializes shared resources once\n\tgenerator := cook.NewGenerator()\n\n\t// Generate multiple patterns efficiently\n\tlist1 := generator.Generate([]string{\"a,b,c\", \"1,2,3\"})\n\tlist2 := generator.Generate([]string{\"admin\", \"password-2023\"})\n\n\tfmt.Println(\"Pattern 1:\", list1)\n\tfmt.Println(\"Pattern 2:\", list2)\n}\n```\n\n## Concurrent Pattern Generation\n\nThe generator also supports concurrent pattern generation:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\t\"github.com/glitchedgitz/cook/v2/pkg/cook\"\n)\n\nfunc main() {\n\tgenerator := cook.NewGenerator()\n\tpatterns := [][]string{\n\t\t{\"user-1-5\", \"pass-1-3\"},\n\t\t{\"admin\", \"Admin-2023-2025\"},\n\t}\n\n\tvar wg sync.WaitGroup\n\tresults := make([][]string, len(patterns))\n\n\t// Generate patterns concurrently\n\tfor i, pattern := range patterns {\n\t\twg.Add(1)\n\t\tgo func(idx int, p []string) {\n\t\t\tdefer wg.Done()\n\t\t\tresults[idx] = generator.Generate(p)\n\t\t}(i, pattern)\n\t}\n\n\twg.Wait()\n\n\t// Use the results\n\tfor i, r := range results {\n\t\tfmt.Printf(\"Pattern %d generated %d results\\n\", i, len(r))\n\t}\n}\n```\n\n## Search Example\n\nSearch the [cook-ingredients](https://github.com/glitchedgitz/cook-ingredients) using the library:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/glitchedgitz/cook/v2/pkg/cook\"\n)\n\nfunc main() {\n\tcookInst := cook.NewWithoutConfig()\n\tresults := cookInst.Search(\"api\")\n\tfmt.Printf(\"Searched API patterns: %v\\n\", results)\n}\n```\n\n# Share your recipies and ingredients in [cook-ingredients](https://github.com/glitchedgitz/cook-ingredients)\n\n- Share your yaml file with community\n\n# Contribute\n\n- Use concurrency and make it faster\n- Autocomplete for shells\n- Make append work something like this `cook file1 =/= file2`, make sure chars directly work with all terminals.\n- Making **raw string** works like as it works in programming languages. Means better parser.\n- I don't know, you might use your creativity and add some awesome features.\n- You can [buy me a coffee](https://www.buymeacoffee.com/glitchedgitz)☕\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglitchedgitz%2Fcook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglitchedgitz%2Fcook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglitchedgitz%2Fcook/lists"}