diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..b263602
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+# This file is for unifying the coding style for different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = false
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b512c09
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..4cee540
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,3 @@
+language: node_js
+node_js:
+ - 0.10
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000..e45eee3
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,31 @@
+module.exports = function(grunt) {
+ grunt.initConfig({
+ bump: {
+ options: {
+ files: ['package.json'],
+ commit: true,
+ commitMessage: 'Release v%VERSION%',
+ commitFiles: ['package.json'],
+ createTag: true,
+ tagName: '%VERSION%',
+ tagMessage: '',
+ push: true,
+ pushTo: 'origin'
+ }
+ },
+
+ lintspaces: {
+ all: {
+ src: ['*'],
+ options: {
+ editorconfig: '.editorconfig'
+ }
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-bump');
+ grunt.loadNpmTasks('grunt-lintspaces');
+
+ grunt.registerTask('default', ['lintspaces']);
+};
\ No newline at end of file
diff --git a/README.md b/README.md
index 4338880..58b3042 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,38 @@
-# sublime-js-snippets
-a plugin of sublime text with javascript snippets
+# JavaScript Snippets for Sublime [](https://travis-ci.org/imweb/sublime-js-snippets)
+
+## Install
+
+To install through [Package Control](http://wbond.net/sublime_packages/package_control),
+search for **JavaScript Snippets for IMWeb**. If you still don't have Package Control in Sublime Text, [go get it](http://wbond.net/sublime_packages/package_control/installation).
+It's pure awesomeness.
+
+If you prefer to install it manually, you can download the package and put it inside your `Packages` directory. It should work but will not update automatically.
+
+## Console
+
+### [cd] console.dir
+
+```javascript
+console.dir(${1:obj});
+```
+
+## MISC
+
+### [mi] new Image
+
+```javascript
+new Image().src = '/${1}';
+```
+
+## Contributing
+
+1. Fork it!
+2. Create your feature branch: `git checkout -b my-new-feature`
+3. Commit your changes: `git commit -m 'Add some feature'`
+4. Push to the branch: `git push origin my-new-feature`
+5. Submit a pull request :D
+
+## History
+
+Check [Releases](https://github.com/imweb/sublime-js-snippets/releases) for detailed changelog.
+
diff --git a/console-log.sublime-snippet b/console-log.sublime-snippet
new file mode 100644
index 0000000..9cf556f
--- /dev/null
+++ b/console-log.sublime-snippet
@@ -0,0 +1,8 @@
+
+
+ cl
+ source.js
+ console.log
+
\ No newline at end of file
diff --git a/misc-new-image.sublime-snippet b/misc-new-image.sublime-snippet
new file mode 100644
index 0000000..23a085b
--- /dev/null
+++ b/misc-new-image.sublime-snippet
@@ -0,0 +1,11 @@
+
+
+
+
+ mi
+ new Image().src
+
+ source.js, meta.class.instance.constructor, keyword.operator.new.js
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..850b9ce
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "sublime-js-snippets",
+ "version": "0.0.1",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/imweb/sublime-js-snippets.git"
+ },
+ "devDependencies": {
+ "grunt": "0.4.2",
+ "grunt-bump": "0.0.13",
+ "grunt-cli": "0.1.11",
+ "grunt-lintspaces": "0.3.1"
+ },
+ "scripts": {
+ "test": "grunt"
+ }
+}